{"id":"8d31aa873076775daeb8e51a3217baf8","_format":"hh-sol-build-info-1","solcVersion":"0.8.30","solcLongVersion":"0.8.30+commit.73712a01","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    /**\n     * @dev The caller account is not authorized to perform an operation.\n     */\n    error OwnableUnauthorizedAccount(address account);\n\n    /**\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\n     */\n    error OwnableInvalidOwner(address owner);\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n     */\n    constructor(address initialOwner) {\n        if (initialOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        if (owner() != _msgSender()) {\n            revert OwnableUnauthorizedAccount(_msgSender());\n        }\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        if (newOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Floor, // Toward negative infinity\n        Ceil, // Toward positive infinity\n        Trunc, // Toward zero\n        Expand // Away from zero\n    }\n\n    /**\n     * @dev Return the 512-bit addition of two uint256.\n     *\n     * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low.\n     */\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        assembly (\"memory-safe\") {\n            low := add(a, b)\n            high := lt(low, a)\n        }\n    }\n\n    /**\n     * @dev Return the 512-bit multiplication of two uint256.\n     *\n     * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low.\n     */\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n        // variables such that product = high * 2²⁵⁶ + low.\n        assembly (\"memory-safe\") {\n            let mm := mulmod(a, b, not(0))\n            low := mul(a, b)\n            high := sub(sub(mm, low), lt(mm, low))\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a + b;\n            success = c >= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a - b;\n            success = c <= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a * b;\n            assembly (\"memory-safe\") {\n                // Only true when the multiplication doesn't overflow\n                // (c / a == b) || (a == 0)\n                success := or(eq(div(c, a), b), iszero(a))\n            }\n            // equivalent to: success ? c : 0\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `DIV` opcode returns zero when the denominator is 0.\n                result := div(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `MOD` opcode returns zero when the denominator is 0.\n                result := mod(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryAdd(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n     */\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n        (, uint256 result) = trySub(a, b);\n        return result;\n    }\n\n    /**\n     * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryMul(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds towards infinity instead\n     * of rounding towards zero.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (b == 0) {\n            // Guarantee the same behavior as in a regular Solidity division.\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n\n        // The following calculation ensures accurate ceiling division without overflow.\n        // Since a is non-zero, (a - 1) / b will not overflow.\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\n        // when a = type(uint256).max and b = 1.\n        unchecked {\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n        }\n    }\n\n    /**\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n     * denominator == 0.\n     *\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n     * Uniswap Labs also under MIT license.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (high == 0) {\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n                // The surrounding unchecked block does not change this fact.\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n                return low / denominator;\n            }\n\n            // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n            if (denominator <= high) {\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n            }\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [high low].\n            uint256 remainder;\n            assembly (\"memory-safe\") {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                high := sub(high, gt(remainder, low))\n                low := sub(low, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n            uint256 twos = denominator & (0 - denominator);\n            assembly (\"memory-safe\") {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [high low] by twos.\n                low := div(low, twos)\n\n                // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from high into low.\n            low |= high * twos;\n\n            // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n            // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n            // works in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n            inverse *= 2 - denominator * inverse; // inverse mod 2³²\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n            // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high\n            // is no longer required.\n            result = low * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n    }\n\n    /**\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n            if (high >= 1 << n) {\n                Panic.panic(Panic.UNDER_OVERFLOW);\n            }\n            return (high << (256 - n)) | (low >> n);\n        }\n    }\n\n    /**\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n    }\n\n    /**\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n     *\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n     *\n     * If the input value is not inversible, 0 is returned.\n     *\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n     */\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n        unchecked {\n            if (n == 0) return 0;\n\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n            // ax + ny = 1\n            // ax = 1 + (-y)n\n            // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n            // If the remainder is 0 the gcd is n right away.\n            uint256 remainder = a % n;\n            uint256 gcd = n;\n\n            // Therefore the initial coefficients are:\n            // ax + ny = gcd(a, n) = n\n            // 0a + 1n = n\n            int256 x = 0;\n            int256 y = 1;\n\n            while (remainder != 0) {\n                uint256 quotient = gcd / remainder;\n\n                (gcd, remainder) = (\n                    // The old remainder is the next gcd to try.\n                    remainder,\n                    // Compute the next remainder.\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n                    // where gcd is at most n (capped to type(uint256).max)\n                    gcd - remainder * quotient\n                );\n\n                (x, y) = (\n                    // Increment the coefficient of a.\n                    y,\n                    // Decrement the coefficient of n.\n                    // Can overflow, but the result is casted to uint256 so that the\n                    // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n                    x - y * int256(quotient)\n                );\n            }\n\n            if (gcd != 1) return 0; // No inverse exists.\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n        }\n    }\n\n    /**\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n     *\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n     * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n     *\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n     */\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n        unchecked {\n            return Math.modExp(a, p - 2, p);\n        }\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n     *\n     * Requirements:\n     * - modulus can't be zero\n     * - underlying staticcall to precompile must succeed\n     *\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n     * interpreted as 0.\n     */\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n        (bool success, uint256 result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n     * to operate modulo 0 or if the underlying precompile reverted.\n     *\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n     * of a revert, but the result may be incorrectly interpreted as 0.\n     */\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n        if (m == 0) return (false, 0);\n        assembly (\"memory-safe\") {\n            let ptr := mload(0x40)\n            // | Offset    | Content    | Content (Hex)                                                      |\n            // |-----------|------------|--------------------------------------------------------------------|\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n            mstore(ptr, 0x20)\n            mstore(add(ptr, 0x20), 0x20)\n            mstore(add(ptr, 0x40), 0x20)\n            mstore(add(ptr, 0x60), b)\n            mstore(add(ptr, 0x80), e)\n            mstore(add(ptr, 0xa0), m)\n\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\n            // so we can use the memory scratch space located at offset 0.\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n            result := mload(0x00)\n        }\n    }\n\n    /**\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\n     */\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n        (bool success, bytes memory result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n     */\n    function tryModExp(\n        bytes memory b,\n        bytes memory e,\n        bytes memory m\n    ) internal view returns (bool success, bytes memory result) {\n        if (_zeroBytes(m)) return (false, new bytes(0));\n\n        uint256 mLen = m.length;\n\n        // Encode call args in result and move the free memory pointer\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n        assembly (\"memory-safe\") {\n            let dataPtr := add(result, 0x20)\n            // Write result on top of args to avoid allocating extra memory.\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n            // Overwrite the length.\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n            mstore(result, mLen)\n            // Set the memory pointer after the returned data.\n            mstore(0x40, add(dataPtr, mLen))\n        }\n    }\n\n    /**\n     * @dev Returns whether the provided byte array is zero.\n     */\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n        for (uint256 i = 0; i < byteArray.length; ++i) {\n            if (byteArray[i] != 0) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /**\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n     * towards zero.\n     *\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n     * using integer operations.\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        unchecked {\n            // Take care of easy edge cases when a == 0 or a == 1\n            if (a <= 1) {\n                return a;\n            }\n\n            // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n            // the current value as `ε_n = | x_n - sqrt(a) |`.\n            //\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n            // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n            // bigger than any uint256.\n            //\n            // By noticing that\n            // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n            // to the msb function.\n            uint256 aa = a;\n            uint256 xn = 1;\n\n            if (aa >= (1 << 128)) {\n                aa >>= 128;\n                xn <<= 64;\n            }\n            if (aa >= (1 << 64)) {\n                aa >>= 64;\n                xn <<= 32;\n            }\n            if (aa >= (1 << 32)) {\n                aa >>= 32;\n                xn <<= 16;\n            }\n            if (aa >= (1 << 16)) {\n                aa >>= 16;\n                xn <<= 8;\n            }\n            if (aa >= (1 << 8)) {\n                aa >>= 8;\n                xn <<= 4;\n            }\n            if (aa >= (1 << 4)) {\n                aa >>= 4;\n                xn <<= 2;\n            }\n            if (aa >= (1 << 2)) {\n                xn <<= 1;\n            }\n\n            // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n            //\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n            // This is going to be our x_0 (and ε_0)\n            xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n            // From here, Newton's method give us:\n            // x_{n+1} = (x_n + a / x_n) / 2\n            //\n            // One should note that:\n            // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n            //              = ((x_n² + a) / (2 * x_n))² - a\n            //              = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n            //              = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n            //              = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n            //              = (x_n² - a)² / (2 * x_n)²\n            //              = ((x_n² - a) / (2 * x_n))²\n            //              ≥ 0\n            // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n            //\n            // This gives us the proof of quadratic convergence of the sequence:\n            // ε_{n+1} = | x_{n+1} - sqrt(a) |\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\n            //         = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n            //         = | (x_n - sqrt(a))² / (2 * x_n) |\n            //         = | ε_n² / (2 * x_n) |\n            //         = ε_n² / | (2 * x_n) |\n            //\n            // For the first iteration, we have a special case where x_0 is known:\n            // ε_1 = ε_0² / | (2 * x_0) |\n            //     ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n            //     ≤ 2**(2*e-4) / (3 * 2**(e-1))\n            //     ≤ 2**(e-3) / 3\n            //     ≤ 2**(e-3-log2(3))\n            //     ≤ 2**(e-4.5)\n            //\n            // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n            // ε_{n+1} = ε_n² / | (2 * x_n) |\n            //         ≤ (2**(e-k))² / (2 * 2**(e-1))\n            //         ≤ 2**(2*e-2*k) / 2**e\n            //         ≤ 2**(e-2*k)\n            xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5)  -- special case, see above\n            xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9)    -- general case with k = 4.5\n            xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18)   -- general case with k = 9\n            xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36)   -- general case with k = 18\n            xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72)   -- general case with k = 36\n            xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144)  -- general case with k = 72\n\n            // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n            // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n            // sqrt(a) or sqrt(a) + 1.\n            return xn - SafeCast.toUint(xn > a / xn);\n        }\n    }\n\n    /**\n     * @dev Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = sqrt(a);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // If upper 8 bits of 16-bit half set, add 8 to result\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n        // If upper 4 bits of 8-bit half set, add 4 to result\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n        // Shifts value right by the current result and use it as an index into this lookup table:\n        //\n        // | x (4 bits) |  index  | table[index] = MSB position |\n        // |------------|---------|-----------------------------|\n        // |    0000    |    0    |        table[0] = 0         |\n        // |    0001    |    1    |        table[1] = 0         |\n        // |    0010    |    2    |        table[2] = 1         |\n        // |    0011    |    3    |        table[3] = 1         |\n        // |    0100    |    4    |        table[4] = 2         |\n        // |    0101    |    5    |        table[5] = 2         |\n        // |    0110    |    6    |        table[6] = 2         |\n        // |    0111    |    7    |        table[7] = 2         |\n        // |    1000    |    8    |        table[8] = 3         |\n        // |    1001    |    9    |        table[9] = 3         |\n        // |    1010    |   10    |        table[10] = 3        |\n        // |    1011    |   11    |        table[11] = 3        |\n        // |    1100    |   12    |        table[12] = 3        |\n        // |    1101    |   13    |        table[13] = 3        |\n        // |    1110    |   14    |        table[14] = 3        |\n        // |    1111    |   15    |        table[15] = 3        |\n        //\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\n        assembly (\"memory-safe\") {\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log2(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >= 10 ** 64) {\n                value /= 10 ** 64;\n                result += 64;\n            }\n            if (value >= 10 ** 32) {\n                value /= 10 ** 32;\n                result += 32;\n            }\n            if (value >= 10 ** 16) {\n                value /= 10 ** 16;\n                result += 16;\n            }\n            if (value >= 10 ** 8) {\n                value /= 10 ** 8;\n                result += 8;\n            }\n            if (value >= 10 ** 4) {\n                value /= 10 ** 4;\n                result += 4;\n            }\n            if (value >= 10 ** 2) {\n                value /= 10 ** 2;\n                result += 2;\n            }\n            if (value >= 10 ** 1) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log10(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     *\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n     */\n    function log256(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n    }\n\n    /**\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log256(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n        }\n    }\n\n    /**\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n     */\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n        return uint8(rounding) % 2 == 1;\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an 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 SafeCast {\n    /**\n     * @dev Value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n    /**\n     * @dev An int value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedIntToUint(int256 value);\n\n    /**\n     * @dev Value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n    /**\n     * @dev An uint value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedUintToInt(uint256 value);\n\n    /**\n     * @dev Returns the downcasted uint248 from uint256, reverting on\n     * overflow (when the input is greater than largest uint248).\n     *\n     * Counterpart to Solidity's `uint248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toUint248(uint256 value) internal pure returns (uint248) {\n        if (value > type(uint248).max) {\n            revert SafeCastOverflowedUintDowncast(248, value);\n        }\n        return uint248(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint240 from uint256, reverting on\n     * overflow (when the input is greater than largest uint240).\n     *\n     * Counterpart to Solidity's `uint240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toUint240(uint256 value) internal pure returns (uint240) {\n        if (value > type(uint240).max) {\n            revert SafeCastOverflowedUintDowncast(240, value);\n        }\n        return uint240(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint232 from uint256, reverting on\n     * overflow (when the input is greater than largest uint232).\n     *\n     * Counterpart to Solidity's `uint232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toUint232(uint256 value) internal pure returns (uint232) {\n        if (value > type(uint232).max) {\n            revert SafeCastOverflowedUintDowncast(232, value);\n        }\n        return uint232(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint224 from uint256, reverting on\n     * overflow (when the input is greater than largest uint224).\n     *\n     * Counterpart to Solidity's `uint224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toUint224(uint256 value) internal pure returns (uint224) {\n        if (value > type(uint224).max) {\n            revert SafeCastOverflowedUintDowncast(224, value);\n        }\n        return uint224(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint216 from uint256, reverting on\n     * overflow (when the input is greater than largest uint216).\n     *\n     * Counterpart to Solidity's `uint216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toUint216(uint256 value) internal pure returns (uint216) {\n        if (value > type(uint216).max) {\n            revert SafeCastOverflowedUintDowncast(216, value);\n        }\n        return uint216(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint208 from uint256, reverting on\n     * overflow (when the input is greater than largest uint208).\n     *\n     * Counterpart to Solidity's `uint208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toUint208(uint256 value) internal pure returns (uint208) {\n        if (value > type(uint208).max) {\n            revert SafeCastOverflowedUintDowncast(208, value);\n        }\n        return uint208(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint200 from uint256, reverting on\n     * overflow (when the input is greater than largest uint200).\n     *\n     * Counterpart to Solidity's `uint200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toUint200(uint256 value) internal pure returns (uint200) {\n        if (value > type(uint200).max) {\n            revert SafeCastOverflowedUintDowncast(200, value);\n        }\n        return uint200(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint192 from uint256, reverting on\n     * overflow (when the input is greater than largest uint192).\n     *\n     * Counterpart to Solidity's `uint192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toUint192(uint256 value) internal pure returns (uint192) {\n        if (value > type(uint192).max) {\n            revert SafeCastOverflowedUintDowncast(192, value);\n        }\n        return uint192(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint184 from uint256, reverting on\n     * overflow (when the input is greater than largest uint184).\n     *\n     * Counterpart to Solidity's `uint184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toUint184(uint256 value) internal pure returns (uint184) {\n        if (value > type(uint184).max) {\n            revert SafeCastOverflowedUintDowncast(184, value);\n        }\n        return uint184(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint176 from uint256, reverting on\n     * overflow (when the input is greater than largest uint176).\n     *\n     * Counterpart to Solidity's `uint176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toUint176(uint256 value) internal pure returns (uint176) {\n        if (value > type(uint176).max) {\n            revert SafeCastOverflowedUintDowncast(176, value);\n        }\n        return uint176(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint168 from uint256, reverting on\n     * overflow (when the input is greater than largest uint168).\n     *\n     * Counterpart to Solidity's `uint168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toUint168(uint256 value) internal pure returns (uint168) {\n        if (value > type(uint168).max) {\n            revert SafeCastOverflowedUintDowncast(168, value);\n        }\n        return uint168(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint160 from uint256, reverting on\n     * overflow (when the input is greater than largest uint160).\n     *\n     * Counterpart to Solidity's `uint160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toUint160(uint256 value) internal pure returns (uint160) {\n        if (value > type(uint160).max) {\n            revert SafeCastOverflowedUintDowncast(160, value);\n        }\n        return uint160(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint152 from uint256, reverting on\n     * overflow (when the input is greater than largest uint152).\n     *\n     * Counterpart to Solidity's `uint152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toUint152(uint256 value) internal pure returns (uint152) {\n        if (value > type(uint152).max) {\n            revert SafeCastOverflowedUintDowncast(152, value);\n        }\n        return uint152(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint144 from uint256, reverting on\n     * overflow (when the input is greater than largest uint144).\n     *\n     * Counterpart to Solidity's `uint144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toUint144(uint256 value) internal pure returns (uint144) {\n        if (value > type(uint144).max) {\n            revert SafeCastOverflowedUintDowncast(144, value);\n        }\n        return uint144(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint136 from uint256, reverting on\n     * overflow (when the input is greater than largest uint136).\n     *\n     * Counterpart to Solidity's `uint136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toUint136(uint256 value) internal pure returns (uint136) {\n        if (value > type(uint136).max) {\n            revert SafeCastOverflowedUintDowncast(136, value);\n        }\n        return uint136(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint128 from uint256, reverting on\n     * overflow (when the input is greater than largest uint128).\n     *\n     * Counterpart to Solidity's `uint128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toUint128(uint256 value) internal pure returns (uint128) {\n        if (value > type(uint128).max) {\n            revert SafeCastOverflowedUintDowncast(128, value);\n        }\n        return uint128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint120 from uint256, reverting on\n     * overflow (when the input is greater than largest uint120).\n     *\n     * Counterpart to Solidity's `uint120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toUint120(uint256 value) internal pure returns (uint120) {\n        if (value > type(uint120).max) {\n            revert SafeCastOverflowedUintDowncast(120, value);\n        }\n        return uint120(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint112 from uint256, reverting on\n     * overflow (when the input is greater than largest uint112).\n     *\n     * Counterpart to Solidity's `uint112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toUint112(uint256 value) internal pure returns (uint112) {\n        if (value > type(uint112).max) {\n            revert SafeCastOverflowedUintDowncast(112, value);\n        }\n        return uint112(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint104 from uint256, reverting on\n     * overflow (when the input is greater than largest uint104).\n     *\n     * Counterpart to Solidity's `uint104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toUint104(uint256 value) internal pure returns (uint104) {\n        if (value > type(uint104).max) {\n            revert SafeCastOverflowedUintDowncast(104, value);\n        }\n        return uint104(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint96 from uint256, reverting on\n     * overflow (when the input is greater than largest uint96).\n     *\n     * Counterpart to Solidity's `uint96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toUint96(uint256 value) internal pure returns (uint96) {\n        if (value > type(uint96).max) {\n            revert SafeCastOverflowedUintDowncast(96, value);\n        }\n        return uint96(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint88 from uint256, reverting on\n     * overflow (when the input is greater than largest uint88).\n     *\n     * Counterpart to Solidity's `uint88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toUint88(uint256 value) internal pure returns (uint88) {\n        if (value > type(uint88).max) {\n            revert SafeCastOverflowedUintDowncast(88, value);\n        }\n        return uint88(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint80 from uint256, reverting on\n     * overflow (when the input is greater than largest uint80).\n     *\n     * Counterpart to Solidity's `uint80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toUint80(uint256 value) internal pure returns (uint80) {\n        if (value > type(uint80).max) {\n            revert SafeCastOverflowedUintDowncast(80, value);\n        }\n        return uint80(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint72 from uint256, reverting on\n     * overflow (when the input is greater than largest uint72).\n     *\n     * Counterpart to Solidity's `uint72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toUint72(uint256 value) internal pure returns (uint72) {\n        if (value > type(uint72).max) {\n            revert SafeCastOverflowedUintDowncast(72, value);\n        }\n        return uint72(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint64 from uint256, reverting on\n     * overflow (when the input is greater than largest uint64).\n     *\n     * Counterpart to Solidity's `uint64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toUint64(uint256 value) internal pure returns (uint64) {\n        if (value > type(uint64).max) {\n            revert SafeCastOverflowedUintDowncast(64, value);\n        }\n        return uint64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint56 from uint256, reverting on\n     * overflow (when the input is greater than largest uint56).\n     *\n     * Counterpart to Solidity's `uint56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toUint56(uint256 value) internal pure returns (uint56) {\n        if (value > type(uint56).max) {\n            revert SafeCastOverflowedUintDowncast(56, value);\n        }\n        return uint56(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint48 from uint256, reverting on\n     * overflow (when the input is greater than largest uint48).\n     *\n     * Counterpart to Solidity's `uint48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toUint48(uint256 value) internal pure returns (uint48) {\n        if (value > type(uint48).max) {\n            revert SafeCastOverflowedUintDowncast(48, value);\n        }\n        return uint48(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint40 from uint256, reverting on\n     * overflow (when the input is greater than largest uint40).\n     *\n     * Counterpart to Solidity's `uint40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toUint40(uint256 value) internal pure returns (uint40) {\n        if (value > type(uint40).max) {\n            revert SafeCastOverflowedUintDowncast(40, value);\n        }\n        return uint40(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint32 from uint256, reverting on\n     * overflow (when the input is greater than largest uint32).\n     *\n     * Counterpart to Solidity's `uint32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toUint32(uint256 value) internal pure returns (uint32) {\n        if (value > type(uint32).max) {\n            revert SafeCastOverflowedUintDowncast(32, value);\n        }\n        return uint32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint24 from uint256, reverting on\n     * overflow (when the input is greater than largest uint24).\n     *\n     * Counterpart to Solidity's `uint24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toUint24(uint256 value) internal pure returns (uint24) {\n        if (value > type(uint24).max) {\n            revert SafeCastOverflowedUintDowncast(24, value);\n        }\n        return uint24(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint16 from uint256, reverting on\n     * overflow (when the input is greater than largest uint16).\n     *\n     * Counterpart to Solidity's `uint16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toUint16(uint256 value) internal pure returns (uint16) {\n        if (value > type(uint16).max) {\n            revert SafeCastOverflowedUintDowncast(16, value);\n        }\n        return uint16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint8 from uint256, reverting on\n     * overflow (when the input is greater than largest uint8).\n     *\n     * Counterpart to Solidity's `uint8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        if (value > type(uint8).max) {\n            revert SafeCastOverflowedUintDowncast(8, value);\n        }\n        return uint8(value);\n    }\n\n    /**\n     * @dev Converts a signed int256 into an unsigned uint256.\n     *\n     * Requirements:\n     *\n     * - input must be greater than or equal to 0.\n     */\n    function toUint256(int256 value) internal pure returns (uint256) {\n        if (value < 0) {\n            revert SafeCastOverflowedIntToUint(value);\n        }\n        return uint256(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int248 from int256, reverting on\n     * overflow (when the input is less than smallest int248 or\n     * greater than largest int248).\n     *\n     * Counterpart to Solidity's `int248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\n        downcasted = int248(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(248, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int240 from int256, reverting on\n     * overflow (when the input is less than smallest int240 or\n     * greater than largest int240).\n     *\n     * Counterpart to Solidity's `int240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\n        downcasted = int240(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(240, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int232 from int256, reverting on\n     * overflow (when the input is less than smallest int232 or\n     * greater than largest int232).\n     *\n     * Counterpart to Solidity's `int232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\n        downcasted = int232(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(232, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int224 from int256, reverting on\n     * overflow (when the input is less than smallest int224 or\n     * greater than largest int224).\n     *\n     * Counterpart to Solidity's `int224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\n        downcasted = int224(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(224, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int216 from int256, reverting on\n     * overflow (when the input is less than smallest int216 or\n     * greater than largest int216).\n     *\n     * Counterpart to Solidity's `int216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\n        downcasted = int216(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(216, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int208 from int256, reverting on\n     * overflow (when the input is less than smallest int208 or\n     * greater than largest int208).\n     *\n     * Counterpart to Solidity's `int208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\n        downcasted = int208(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(208, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int200 from int256, reverting on\n     * overflow (when the input is less than smallest int200 or\n     * greater than largest int200).\n     *\n     * Counterpart to Solidity's `int200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\n        downcasted = int200(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(200, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int192 from int256, reverting on\n     * overflow (when the input is less than smallest int192 or\n     * greater than largest int192).\n     *\n     * Counterpart to Solidity's `int192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\n        downcasted = int192(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(192, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int184 from int256, reverting on\n     * overflow (when the input is less than smallest int184 or\n     * greater than largest int184).\n     *\n     * Counterpart to Solidity's `int184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\n        downcasted = int184(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(184, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int176 from int256, reverting on\n     * overflow (when the input is less than smallest int176 or\n     * greater than largest int176).\n     *\n     * Counterpart to Solidity's `int176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\n        downcasted = int176(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(176, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int168 from int256, reverting on\n     * overflow (when the input is less than smallest int168 or\n     * greater than largest int168).\n     *\n     * Counterpart to Solidity's `int168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\n        downcasted = int168(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(168, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int160 from int256, reverting on\n     * overflow (when the input is less than smallest int160 or\n     * greater than largest int160).\n     *\n     * Counterpart to Solidity's `int160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\n        downcasted = int160(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(160, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int152 from int256, reverting on\n     * overflow (when the input is less than smallest int152 or\n     * greater than largest int152).\n     *\n     * Counterpart to Solidity's `int152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\n        downcasted = int152(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(152, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int144 from int256, reverting on\n     * overflow (when the input is less than smallest int144 or\n     * greater than largest int144).\n     *\n     * Counterpart to Solidity's `int144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\n        downcasted = int144(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(144, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int136 from int256, reverting on\n     * overflow (when the input is less than smallest int136 or\n     * greater than largest int136).\n     *\n     * Counterpart to Solidity's `int136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\n        downcasted = int136(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(136, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int128 from int256, reverting on\n     * overflow (when the input is less than smallest int128 or\n     * greater than largest int128).\n     *\n     * Counterpart to Solidity's `int128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\n        downcasted = int128(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(128, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int120 from int256, reverting on\n     * overflow (when the input is less than smallest int120 or\n     * greater than largest int120).\n     *\n     * Counterpart to Solidity's `int120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\n        downcasted = int120(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(120, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int112 from int256, reverting on\n     * overflow (when the input is less than smallest int112 or\n     * greater than largest int112).\n     *\n     * Counterpart to Solidity's `int112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\n        downcasted = int112(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(112, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int104 from int256, reverting on\n     * overflow (when the input is less than smallest int104 or\n     * greater than largest int104).\n     *\n     * Counterpart to Solidity's `int104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\n        downcasted = int104(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(104, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int96 from int256, reverting on\n     * overflow (when the input is less than smallest int96 or\n     * greater than largest int96).\n     *\n     * Counterpart to Solidity's `int96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\n        downcasted = int96(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(96, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int88 from int256, reverting on\n     * overflow (when the input is less than smallest int88 or\n     * greater than largest int88).\n     *\n     * Counterpart to Solidity's `int88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\n        downcasted = int88(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(88, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int80 from int256, reverting on\n     * overflow (when the input is less than smallest int80 or\n     * greater than largest int80).\n     *\n     * Counterpart to Solidity's `int80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\n        downcasted = int80(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(80, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int72 from int256, reverting on\n     * overflow (when the input is less than smallest int72 or\n     * greater than largest int72).\n     *\n     * Counterpart to Solidity's `int72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\n        downcasted = int72(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(72, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int64 from int256, reverting on\n     * overflow (when the input is less than smallest int64 or\n     * greater than largest int64).\n     *\n     * Counterpart to Solidity's `int64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\n        downcasted = int64(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(64, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int56 from int256, reverting on\n     * overflow (when the input is less than smallest int56 or\n     * greater than largest int56).\n     *\n     * Counterpart to Solidity's `int56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\n        downcasted = int56(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(56, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int48 from int256, reverting on\n     * overflow (when the input is less than smallest int48 or\n     * greater than largest int48).\n     *\n     * Counterpart to Solidity's `int48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\n        downcasted = int48(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(48, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int40 from int256, reverting on\n     * overflow (when the input is less than smallest int40 or\n     * greater than largest int40).\n     *\n     * Counterpart to Solidity's `int40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\n        downcasted = int40(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(40, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int32 from int256, reverting on\n     * overflow (when the input is less than smallest int32 or\n     * greater than largest int32).\n     *\n     * Counterpart to Solidity's `int32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\n        downcasted = int32(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(32, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int24 from int256, reverting on\n     * overflow (when the input is less than smallest int24 or\n     * greater than largest int24).\n     *\n     * Counterpart to Solidity's `int24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\n        downcasted = int24(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(24, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int16 from int256, reverting on\n     * overflow (when the input is less than smallest int16 or\n     * greater than largest int16).\n     *\n     * Counterpart to Solidity's `int16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\n        downcasted = int16(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(16, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int8 from int256, reverting on\n     * overflow (when the input is less than smallest int8 or\n     * greater than largest int8).\n     *\n     * Counterpart to Solidity's `int8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\n        downcasted = int8(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(8, value);\n        }\n    }\n\n    /**\n     * @dev Converts an unsigned uint256 into a signed int256.\n     *\n     * Requirements:\n     *\n     * - input must be less than or equal to maxInt256.\n     */\n    function toInt256(uint256 value) internal pure returns (int256) {\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n        if (value > uint256(type(int256).max)) {\n            revert SafeCastOverflowedUintToInt(value);\n        }\n        return int256(value);\n    }\n\n    /**\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n     */\n    function toUint(bool b) internal pure returns (uint256 u) {\n        assembly (\"memory-safe\") {\n            u := iszero(iszero(b))\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two signed numbers.\n     */\n    function max(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two signed numbers.\n     */\n    function min(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two signed numbers without overflow.\n     * The result is rounded towards zero.\n     */\n    function average(int256 a, int256 b) internal pure returns (int256) {\n        // Formula from the book \"Hacker's Delight\"\n        int256 x = (a & b) + ((a ^ b) >> 1);\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\n    }\n\n    /**\n     * @dev Returns the absolute unsigned value of a signed value.\n     */\n    function abs(int256 n) internal pure returns (uint256) {\n        unchecked {\n            // Formula from the \"Bit Twiddling Hacks\" by Sean Eron Anderson.\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\n            // taking advantage of the most significant (or \"sign\" bit) in two's complement representation.\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\n            int256 mask = n >> 255;\n\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\n            return uint256((n + mask) ^ mask);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Panic.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n *      using Panic for uint256;\n *\n *      // Use any of the declared internal constants\n *      function foo() { Panic.GENERIC.panic(); }\n *\n *      // Alternatively\n *      function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n    /// @dev generic / unspecified error\n    uint256 internal constant GENERIC = 0x00;\n    /// @dev used by the assert() builtin\n    uint256 internal constant ASSERT = 0x01;\n    /// @dev arithmetic underflow or overflow\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\n    /// @dev division or modulo by zero\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\n    /// @dev enum conversion error\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n    /// @dev invalid encoding in storage\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n    /// @dev empty array pop\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n    /// @dev array out of bounds access\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n    /// @dev resource error (too large allocation or too large array)\n    uint256 internal constant RESOURCE_ERROR = 0x41;\n    /// @dev calling invalid internal function\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n    /// @dev Reverts with a panic code. Recommended to use with\n    /// the internal constants with predefined codes.\n    function panic(uint256 code) internal pure {\n        assembly (\"memory-safe\") {\n            mstore(0x00, 0x4e487b71)\n            mstore(0x20, code)\n            revert(0x1c, 0x24)\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    using SafeCast for *;\n\n    bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n    uint8 private constant ADDRESS_LENGTH = 20;\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\n        (1 << 0x08) | // backspace\n            (1 << 0x09) | // tab\n            (1 << 0x0a) | // newline\n            (1 << 0x0c) | // form feed\n            (1 << 0x0d) | // carriage return\n            (1 << 0x22) | // double quote\n            (1 << 0x5c); // backslash\n\n    /**\n     * @dev The `value` string doesn't fit in the specified `length`.\n     */\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n    /**\n     * @dev The string being parsed contains characters that are not in scope of the given base.\n     */\n    error StringsInvalidChar();\n\n    /**\n     * @dev The string being parsed is not a properly formatted address.\n     */\n    error StringsInvalidAddressFormat();\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            uint256 length = Math.log10(value) + 1;\n            string memory buffer = new string(length);\n            uint256 ptr;\n            assembly (\"memory-safe\") {\n                ptr := add(add(buffer, 0x20), length)\n            }\n            while (true) {\n                ptr--;\n                assembly (\"memory-safe\") {\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n                }\n                value /= 10;\n                if (value == 0) break;\n            }\n            return buffer;\n        }\n    }\n\n    /**\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\n     */\n    function toStringSigned(int256 value) internal pure returns (string memory) {\n        return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            return toHexString(value, Math.log256(value) + 1);\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        uint256 localValue = value;\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\n            localValue >>= 4;\n        }\n        if (localValue != 0) {\n            revert StringsInsufficientHexLength(value, length);\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n     * representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n     * representation, according to EIP-55.\n     */\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\n        bytes memory buffer = bytes(toHexString(addr));\n\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\n        uint256 hashValue;\n        assembly (\"memory-safe\") {\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\n        }\n\n        for (uint256 i = 41; i > 1; --i) {\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\n                // case shift by xoring with 0x20\n                buffer[i] ^= 0x20;\n            }\n            hashValue >>= 4;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Returns true if the two strings are equal.\n     */\n    function equal(string memory a, string memory b) internal pure returns (bool) {\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input) internal pure returns (uint256) {\n        return parseUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        uint256 result = 0;\n        for (uint256 i = begin; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 9) return (false, 0);\n            result *= 10;\n            result += chr;\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `int256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input) internal pure returns (int256) {\n        return parseInt(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\n        (bool success, int256 value) = tryParseInt(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n     * the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\n\n    /**\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character or if the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, int256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseIntUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseIntUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, int256 value) {\n        bytes memory buffer = bytes(input);\n\n        // Check presence of a negative sign.\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        bool positiveSign = sign == bytes1(\"+\");\n        bool negativeSign = sign == bytes1(\"-\");\n        uint256 offset = (positiveSign || negativeSign).toUint();\n\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\n\n        if (absSuccess && absValue < ABS_MIN_INT256) {\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\n            return (true, type(int256).min);\n        } else return (false, 0);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input) internal pure returns (uint256) {\n        return parseHexUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n     * invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseHexUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        // skip 0x prefix if present\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 offset = hasPrefix.toUint() * 2;\n\n        uint256 result = 0;\n        for (uint256 i = begin + offset; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 15) return (false, 0);\n            result *= 16;\n            unchecked {\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\n                result += chr;\n            }\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input) internal pure returns (address) {\n        return parseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\n        (bool success, address value) = tryParseAddress(input, begin, end);\n        if (!success) revert StringsInvalidAddressFormat();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n     * formatted address. See {parseAddress-string} requirements.\n     */\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\n        return tryParseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\n     */\n    function tryParseAddress(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, address value) {\n        if (end > bytes(input).length || begin > end) return (false, address(0));\n\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\n\n        // check that input is the correct length\n        if (end - begin == expectedLength) {\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\n            return (s, address(uint160(v)));\n        } else {\n            return (false, address(0));\n        }\n    }\n\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\n        uint8 value = uint8(chr);\n\n        // Try to parse `chr`:\n        // - Case 1: [0-9]\n        // - Case 2: [a-f]\n        // - Case 3: [A-F]\n        // - otherwise not supported\n        unchecked {\n            if (value > 47 && value < 58) value -= 48;\n            else if (value > 96 && value < 103) value -= 87;\n            else if (value > 64 && value < 71) value -= 55;\n            else return type(uint8).max;\n        }\n\n        return value;\n    }\n\n    /**\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n     *\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n     *\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n     * characters that are not in this range, but other tooling may provide different results.\n     */\n    function escapeJSON(string memory input) internal pure returns (string memory) {\n        bytes memory buffer = bytes(input);\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\n        uint256 outputLength = 0;\n\n        for (uint256 i; i < buffer.length; ++i) {\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\n                output[outputLength++] = \"\\\\\";\n                if (char == 0x08) output[outputLength++] = \"b\";\n                else if (char == 0x09) output[outputLength++] = \"t\";\n                else if (char == 0x0a) output[outputLength++] = \"n\";\n                else if (char == 0x0c) output[outputLength++] = \"f\";\n                else if (char == 0x0d) output[outputLength++] = \"r\";\n                else if (char == 0x5c) output[outputLength++] = \"\\\\\";\n                else if (char == 0x22) {\n                    // solhint-disable-next-line quotes\n                    output[outputLength++] = '\"';\n                }\n            } else {\n                output[outputLength++] = char;\n            }\n        }\n        // write the actual length and deallocate unused memory\n        assembly (\"memory-safe\") {\n            mstore(output, outputLength)\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\n        }\n\n        return string(output);\n    }\n\n    /**\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\n     *\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n     * assembly block as such would prevent some optimizations.\n     */\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\n        assembly (\"memory-safe\") {\n            value := mload(add(add(buffer, 0x20), offset))\n        }\n    }\n}\n"},"contracts/ExampleSupplyChain.sol":{"content":"// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\ncontract ExampleSupplyChain is Ownable {\n    //////////////////////////////////////////////////////////////////\n    // Storage                                                      //\n    //////////////////////////////////////////////////////////////////\n    uint256 public _firstProcessLotId;\n    uint256 public _secondProcessLotId;\n    uint256 public _packingLotId;\n    uint256 public _transportLotId;\n\n    //////////////////////////////////////////////////////////////////\n    // Events                                                      //\n    //////////////////////////////////////////////////////////////////\n\n    event CreateLotEvent(\n        string lotType, string quantity, string operatorId, string originId, string lotNo, string transporterId\n    );\n\n    event FirstProcessEvent(\n        string lotNos,\n        string operatorId,\n        string machineId,\n        string processingHouseId,\n        string timestamp,\n        string firstProcessLotId\n    );\n\n    event SecondProcessEvent(\n        string firstProcessLotIds,\n        string machineId,\n        string operatorId,\n        string secondProcessOutputLotId,\n        string secondProcessLotId\n    );\n\n    event PackagingEvent(\n        string secondProcessLotId,\n        string operatorId,\n        string packageId,\n        string weight,\n        string packagingType,\n        string packingLotId\n    );\n\n    event TransportEvent(\n        string packageId, string operatorId, string transporterId, string cartonId, string transportLotId\n    );\n\n    //////////////////////////////////////////////////////////////////\n    // Constructor                                                  //\n    //////////////////////////////////////////////////////////////////\n    constructor() Ownable(msg.sender) {\n        // Ownable constructor is called with an initial owner\n    }\n\n    //////////////////////////////////////////////////////////////////\n    // CORE FUNCTIONS                                               //\n    //////////////////////////////////////////////////////////////////\n    function createLot(\n        string memory lotType,\n        string memory quantity,\n        string memory operatorId,\n        string memory originId,\n        string memory lotNo,\n        string memory transporterId\n    )\n        external\n    {\n        emit CreateLotEvent(lotType, quantity, operatorId, originId, lotNo, transporterId);\n    }\n\n    function registerFirstProcess(\n        string memory lotNos,\n        string memory operatorId,\n        string memory machineId,\n        string memory processingHouseId,\n        string memory timestamp\n    )\n        external\n    {\n        _firstProcessLotId += 1;\n\n        emit FirstProcessEvent(\n            lotNos, operatorId, machineId, processingHouseId, timestamp, Strings.toString(_firstProcessLotId)\n        );\n    }\n\n    function registerSecondProcess(\n        string memory firstProcessLotIds,\n        string memory machineId,\n        string memory operatorId,\n        string memory secondProcessOutputLotId\n    )\n        external\n    {\n        _secondProcessLotId += 1;\n\n        emit SecondProcessEvent(\n            firstProcessLotIds, machineId, operatorId, secondProcessOutputLotId, Strings.toString(_secondProcessLotId)\n        );\n    }\n\n    function packing(\n        string memory secondProcessLotId,\n        string memory operatorId,\n        string memory packageId,\n        string memory weight,\n        string memory packagingType\n    )\n        external\n    {\n        _packingLotId += 1;\n\n        emit PackagingEvent(\n            secondProcessLotId, operatorId, packageId, weight, packagingType, Strings.toString(_packingLotId)\n        );\n    }\n\n    function transport(\n        string memory packageId,\n        string memory operatorId,\n        string memory transporterId,\n        string memory cartonId\n    )\n        external\n    {\n        _transportLotId += 1;\n\n        emit TransportEvent(packageId, operatorId, transporterId, cartonId, Strings.toString(_transportLotId));\n    }\n}\n"}},"settings":{"evmVersion":"cancun","viaIR":true,"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[177],"Ownable":[147]},"id":148,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":148,"sourceUnit":178,"src":"128:45:0","symbolAliases":[{"foreign":{"id":2,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"136:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5,"name":"Context","nameLocations":["692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":177,"src":"692:7:0"},"id":6,"nodeType":"InheritanceSpecifier","src":"692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":147,"linearizedBaseContracts":[147,177],"name":"Ownable","nameLocation":"681:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8,"mutability":"mutable","name":"_owner","nameLocation":"722:6:0","nodeType":"VariableDeclaration","scope":147,"src":"706:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":9,"nodeType":"StructuredDocumentation","src":"735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":13,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:0","nodeType":"ErrorDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11,"mutability":"mutable","name":"account","nameLocation":"866:7:0","nodeType":"VariableDeclaration","scope":13,"src":"858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:0"},"src":"825:50:0"},{"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":18,"name":"OwnableInvalidOwner","nameLocation":"974:19:0","nodeType":"ErrorDefinition","parameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16,"mutability":"mutable","name":"owner","nameLocation":"1002:5:0","nodeType":"VariableDeclaration","scope":18,"src":"994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:0"},"src":"968:41:0"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":24,"name":"OwnershipTransferred","nameLocation":"1021:20:0","nodeType":"EventDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:0","nodeType":"VariableDeclaration","scope":24,"src":"1042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:0","nodeType":"VariableDeclaration","scope":24,"src":"1073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:0"},"src":"1015:84:0"},{"body":{"id":49,"nodeType":"Block","src":"1259:153:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":35,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":33,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":32,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:0","typeDescriptions":{}}},"id":34,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44,"nodeType":"IfStatement","src":"1269:95:0","trueBody":{"id":43,"nodeType":"Block","src":"1301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":39,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:0","typeDescriptions":{}}},"id":40,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"1322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42,"nodeType":"RevertStatement","src":"1315:38:0"}]}},{"expression":{"arguments":[{"id":46,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":45,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"1373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":47,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":48,"nodeType":"ExpressionStatement","src":"1373:32:0"}]},"documentation":{"id":25,"nodeType":"StructuredDocumentation","src":"1105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":50,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:0","nodeType":"VariableDeclaration","scope":50,"src":"1237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:0"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[],"src":"1259:0:0"},"scope":147,"src":"1225:187:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":57,"nodeType":"Block","src":"1521:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":53,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"1531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55,"nodeType":"ExpressionStatement","src":"1531:13:0"},{"id":56,"nodeType":"PlaceholderStatement","src":"1554:1:0"}]},"documentation":{"id":51,"nodeType":"StructuredDocumentation","src":"1418:77:0","text":" @dev Throws if called by any account other than the owner."},"id":58,"name":"onlyOwner","nameLocation":"1509:9:0","nodeType":"ModifierDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1518:2:0"},"src":"1500:62:0","virtual":false,"visibility":"internal"},{"body":{"id":66,"nodeType":"Block","src":"1693:30:0","statements":[{"expression":{"id":64,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"1710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":63,"id":65,"nodeType":"Return","src":"1703:13:0"}]},"documentation":{"id":59,"nodeType":"StructuredDocumentation","src":"1568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":67,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:0","nodeType":"FunctionDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[],"src":"1652:2:0"},"returnParameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67,"src":"1684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:0"},"scope":147,"src":"1638:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":83,"nodeType":"Block","src":"1841:117:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":71,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"1855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":73,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"1866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82,"nodeType":"IfStatement","src":"1851:101:0","trueBody":{"id":81,"nodeType":"Block","src":"1880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":77,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"1928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"1901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":80,"nodeType":"RevertStatement","src":"1894:47:0"}]}}]},"documentation":{"id":68,"nodeType":"StructuredDocumentation","src":"1729:62:0","text":" @dev Throws if the sender is not the owner."},"id":84,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:0","nodeType":"FunctionDefinition","parameters":{"id":69,"nodeType":"ParameterList","parameters":[],"src":"1816:2:0"},"returnParameters":{"id":70,"nodeType":"ParameterList","parameters":[],"src":"1841:0:0"},"scope":147,"src":"1796:162:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":97,"nodeType":"Block","src":"2347:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":93,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":92,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:0","typeDescriptions":{}}},"id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":95,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":96,"nodeType":"ExpressionStatement","src":"2357:30:0"}]},"documentation":{"id":85,"nodeType":"StructuredDocumentation","src":"1964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":98,"implemented":true,"kind":"function","modifiers":[{"id":88,"kind":"modifierInvocation","modifierName":{"id":87,"name":"onlyOwner","nameLocations":["2337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"2337:9:0"},"nodeType":"ModifierInvocation","src":"2337:9:0"}],"name":"renounceOwnership","nameLocation":"2302:17:0","nodeType":"FunctionDefinition","parameters":{"id":86,"nodeType":"ParameterList","parameters":[],"src":"2319:2:0"},"returnParameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2347:0:0"},"scope":147,"src":"2293:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":125,"nodeType":"Block","src":"2613:145:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":106,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"2627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:0","typeDescriptions":{}}},"id":110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":120,"nodeType":"IfStatement","src":"2623:91:0","trueBody":{"id":119,"nodeType":"Block","src":"2651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:0","typeDescriptions":{}}},"id":116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":112,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"2672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":118,"nodeType":"RevertStatement","src":"2665:38:0"}]}},{"expression":{"arguments":[{"id":122,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"2742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":121,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":124,"nodeType":"ExpressionStatement","src":"2723:28:0"}]},"documentation":{"id":99,"nodeType":"StructuredDocumentation","src":"2400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":126,"implemented":true,"kind":"function","modifiers":[{"id":104,"kind":"modifierInvocation","modifierName":{"id":103,"name":"onlyOwner","nameLocations":["2603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"2603:9:0"},"nodeType":"ModifierInvocation","src":"2603:9:0"}],"name":"transferOwnership","nameLocation":"2552:17:0","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:0","nodeType":"VariableDeclaration","scope":126,"src":"2570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:0"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"2613:0:0"},"scope":147,"src":"2543:215:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":145,"nodeType":"Block","src":"2975:124:0","statements":[{"assignments":[133],"declarations":[{"constant":false,"id":133,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:0","nodeType":"VariableDeclaration","scope":145,"src":"2985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":135,"initialValue":{"id":134,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"3004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:0"},{"expression":{"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":136,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"3020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":137,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"3029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":139,"nodeType":"ExpressionStatement","src":"3020:17:0"},{"eventCall":{"arguments":[{"id":141,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":133,"src":"3073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":142,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"3083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":140,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"3052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"EmitStatement","src":"3047:45:0"}]},"documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"2764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":146,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:0","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:0","nodeType":"VariableDeclaration","scope":146,"src":"2940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:0"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"2975:0:0"},"scope":147,"src":"2912:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":148,"src":"663:2438:0","usedErrors":[13,18],"usedEvents":[24]}],"src":"102:3000:0"},"id":0},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[177]},"id":178,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":149,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:1"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":150,"nodeType":"StructuredDocumentation","src":"127:496:1","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":177,"linearizedBaseContracts":[177],"name":"Context","nameLocation":"642:7:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":158,"nodeType":"Block","src":"718:34:1","statements":[{"expression":{"expression":{"id":155,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:1","memberName":"sender","nodeType":"MemberAccess","src":"735:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":154,"id":157,"nodeType":"Return","src":"728:17:1"}]},"id":159,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:1","nodeType":"FunctionDefinition","parameters":{"id":151,"nodeType":"ParameterList","parameters":[],"src":"675:2:1"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":159,"src":"709:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:1"},"scope":177,"src":"656:96:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":167,"nodeType":"Block","src":"825:32:1","statements":[{"expression":{"expression":{"id":164,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:1","memberName":"data","nodeType":"MemberAccess","src":"842:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":163,"id":166,"nodeType":"Return","src":"835:15:1"}]},"id":168,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:1","nodeType":"FunctionDefinition","parameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"775:2:1"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":168,"src":"809:14:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":161,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:1"},"scope":177,"src":"758:99:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":175,"nodeType":"Block","src":"935:25:1","statements":[{"expression":{"hexValue":"30","id":173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":172,"id":174,"nodeType":"Return","src":"945:8:1"}]},"id":176,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:1","nodeType":"FunctionDefinition","parameters":{"id":169,"nodeType":"ParameterList","parameters":[],"src":"892:2:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":176,"src":"926:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":170,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:1"},"scope":177,"src":"863:97:1","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":178,"src":"624:338:1","usedErrors":[],"usedEvents":[]}],"src":"101:862:1"},"id":1},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[229]},"id":230,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":179,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:2"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":180,"nodeType":"StructuredDocumentation","src":"125:489:2","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n      using Panic for uint256;\n      // Use any of the declared internal constants\n      function foo() { Panic.GENERIC.panic(); }\n      // Alternatively\n      function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":229,"linearizedBaseContracts":[229],"name":"Panic","nameLocation":"665:5:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":181,"nodeType":"StructuredDocumentation","src":"677:36:2","text":"@dev generic / unspecified error"},"id":184,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:2","nodeType":"VariableDeclaration","scope":229,"src":"718:40:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":182,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":185,"nodeType":"StructuredDocumentation","src":"764:37:2","text":"@dev used by the assert() builtin"},"id":188,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:2","nodeType":"VariableDeclaration","scope":229,"src":"806:39:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":186,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":189,"nodeType":"StructuredDocumentation","src":"851:41:2","text":"@dev arithmetic underflow or overflow"},"id":192,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:2","nodeType":"VariableDeclaration","scope":229,"src":"897:47:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":190,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:2","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":193,"nodeType":"StructuredDocumentation","src":"950:35:2","text":"@dev division or modulo by zero"},"id":196,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:2","nodeType":"VariableDeclaration","scope":229,"src":"990:49:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":194,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:2","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":197,"nodeType":"StructuredDocumentation","src":"1045:30:2","text":"@dev enum conversion error"},"id":200,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:2","nodeType":"VariableDeclaration","scope":229,"src":"1080:54:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:2","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":201,"nodeType":"StructuredDocumentation","src":"1140:36:2","text":"@dev invalid encoding in storage"},"id":204,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:2","nodeType":"VariableDeclaration","scope":229,"src":"1181:55:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:2","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":205,"nodeType":"StructuredDocumentation","src":"1242:24:2","text":"@dev empty array pop"},"id":208,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:2","nodeType":"VariableDeclaration","scope":229,"src":"1271:48:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":206,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:2","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":209,"nodeType":"StructuredDocumentation","src":"1325:35:2","text":"@dev array out of bounds access"},"id":212,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:2","nodeType":"VariableDeclaration","scope":229,"src":"1365:52:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":210,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:2","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":213,"nodeType":"StructuredDocumentation","src":"1423:65:2","text":"@dev resource error (too large allocation or too large array)"},"id":216,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:2","nodeType":"VariableDeclaration","scope":229,"src":"1493:47:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":214,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:2","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":217,"nodeType":"StructuredDocumentation","src":"1546:42:2","text":"@dev calling invalid internal function"},"id":220,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:2","nodeType":"VariableDeclaration","scope":229,"src":"1593:58:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":218,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:2","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":227,"nodeType":"Block","src":"1819:151:2","statements":[{"AST":{"nativeSrc":"1854:110:2","nodeType":"YulBlock","src":"1854:110:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:2","nodeType":"YulLiteral","src":"1875:4:2","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:2","nodeType":"YulLiteral","src":"1881:10:2","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:2","nodeType":"YulIdentifier","src":"1868:6:2"},"nativeSrc":"1868:24:2","nodeType":"YulFunctionCall","src":"1868:24:2"},"nativeSrc":"1868:24:2","nodeType":"YulExpressionStatement","src":"1868:24:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:2","nodeType":"YulLiteral","src":"1912:4:2","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:2","nodeType":"YulIdentifier","src":"1918:4:2"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:2","nodeType":"YulIdentifier","src":"1905:6:2"},"nativeSrc":"1905:18:2","nodeType":"YulFunctionCall","src":"1905:18:2"},"nativeSrc":"1905:18:2","nodeType":"YulExpressionStatement","src":"1905:18:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:2","nodeType":"YulLiteral","src":"1943:4:2","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:2","nodeType":"YulLiteral","src":"1949:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:2","nodeType":"YulIdentifier","src":"1936:6:2"},"nativeSrc":"1936:18:2","nodeType":"YulFunctionCall","src":"1936:18:2"},"nativeSrc":"1936:18:2","nodeType":"YulExpressionStatement","src":"1936:18:2"}]},"evmVersion":"cancun","externalReferences":[{"declaration":223,"isOffset":false,"isSlot":false,"src":"1918:4:2","valueSize":1}],"flags":["memory-safe"],"id":226,"nodeType":"InlineAssembly","src":"1829:135:2"}]},"documentation":{"id":221,"nodeType":"StructuredDocumentation","src":"1658:113:2","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":228,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:2","nodeType":"FunctionDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"code","nameLocation":"1799:4:2","nodeType":"VariableDeclaration","scope":228,"src":"1791:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":222,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:2"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[],"src":"1819:0:2"},"scope":229,"src":"1776:194:2","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":230,"src":"657:1315:2","usedErrors":[],"usedEvents":[]}],"src":"99:1874:2"},"id":2},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[3252],"SafeCast":[5017],"SignedMath":[5161],"Strings":[1631]},"id":1632,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":231,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:3"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":233,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1632,"sourceUnit":3253,"src":"127:37:3","symbolAliases":[{"foreign":{"id":232,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"135:4:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./math/SafeCast.sol","id":235,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1632,"sourceUnit":5018,"src":"165:45:3","symbolAliases":[{"foreign":{"id":234,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"173:8:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":237,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1632,"sourceUnit":5162,"src":"211:49:3","symbolAliases":[{"foreign":{"id":236,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5161,"src":"219:10:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"262:34:3","text":" @dev String operations."},"fullyImplemented":true,"id":1631,"linearizedBaseContracts":[1631],"name":"Strings","nameLocation":"305:7:3","nodeType":"ContractDefinition","nodes":[{"global":false,"id":240,"libraryName":{"id":239,"name":"SafeCast","nameLocations":["325:8:3"],"nodeType":"IdentifierPath","referencedDeclaration":5017,"src":"325:8:3"},"nodeType":"UsingForDirective","src":"319:21:3"},{"constant":true,"id":243,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"371:10:3","nodeType":"VariableDeclaration","scope":1631,"src":"346:56:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":241,"name":"bytes16","nodeType":"ElementaryTypeName","src":"346:7:3","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"384:18:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":246,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"431:14:3","nodeType":"VariableDeclaration","scope":1631,"src":"408:42:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":244,"name":"uint8","nodeType":"ElementaryTypeName","src":"408:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"448:2:3","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"id":282,"mutability":"constant","name":"SPECIAL_CHARS_LOOKUP","nameLocation":"481:20:3","nodeType":"VariableDeclaration","scope":1631,"src":"456:302:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":247,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"},"id":281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_17179883264_by_1","typeString":"int_const 17179883264"},"id":276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_14080_by_1","typeString":"int_const 14080"},"id":271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_5888_by_1","typeString":"int_const 5888"},"id":266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_1792_by_1","typeString":"int_const 1792"},"id":261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_768_by_1","typeString":"int_const 768"},"id":256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"513:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783038","id":249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"518:4:3","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"513:9:3","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":251,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"512:11:3","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"id":254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"552:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783039","id":253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:4:3","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"552:9:3","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}}],"id":255,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"551:11:3","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}},"src":"512:50:3","typeDescriptions":{"typeIdentifier":"t_rational_768_by_1","typeString":"int_const 768"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"id":259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"585:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783061","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"590:4:3","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"585:9:3","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}}],"id":260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"584:11:3","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}},"src":"512:83:3","typeDescriptions":{"typeIdentifier":"t_rational_1792_by_1","typeString":"int_const 1792"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"id":264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"622:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783063","id":263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:4:3","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"622:9:3","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}}],"id":265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"621:11:3","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}},"src":"512:120:3","typeDescriptions":{"typeIdentifier":"t_rational_5888_by_1","typeString":"int_const 5888"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"id":269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"661:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783064","id":268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"666:4:3","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"661:9:3","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}}],"id":270,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"660:11:3","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}},"src":"512:159:3","typeDescriptions":{"typeIdentifier":"t_rational_14080_by_1","typeString":"int_const 14080"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"},"id":274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783232","id":273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"711:4:3","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"706:9:3","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}}],"id":275,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"705:11:3","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"src":"512:204:3","typeDescriptions":{"typeIdentifier":"t_rational_17179883264_by_1","typeString":"int_const 17179883264"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"},"id":279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"748:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783563","id":278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"753:4:3","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"748:9:3","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}}],"id":280,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"747:11:3","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}},"src":"512:246:3","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"}},"visibility":"private"},{"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"778:81:3","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":289,"name":"StringsInsufficientHexLength","nameLocation":"870:28:3","nodeType":"ErrorDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"value","nameLocation":"907:5:3","nodeType":"VariableDeclaration","scope":289,"src":"899:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"length","nameLocation":"922:6:3","nodeType":"VariableDeclaration","scope":289,"src":"914:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"898:31:3"},"src":"864:66:3"},{"documentation":{"id":290,"nodeType":"StructuredDocumentation","src":"936:108:3","text":" @dev The string being parsed contains characters that are not in scope of the given base."},"errorSelector":"94e2737e","id":292,"name":"StringsInvalidChar","nameLocation":"1055:18:3","nodeType":"ErrorDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[],"src":"1073:2:3"},"src":"1049:27:3"},{"documentation":{"id":293,"nodeType":"StructuredDocumentation","src":"1082:84:3","text":" @dev The string being parsed is not a properly formatted address."},"errorSelector":"1d15ae44","id":295,"name":"StringsInvalidAddressFormat","nameLocation":"1177:27:3","nodeType":"ErrorDefinition","parameters":{"id":294,"nodeType":"ParameterList","parameters":[],"src":"1204:2:3"},"src":"1171:36:3"},{"body":{"id":342,"nodeType":"Block","src":"1379:563:3","statements":[{"id":341,"nodeType":"UncheckedBlock","src":"1389:547:3","statements":[{"assignments":[304],"declarations":[{"constant":false,"id":304,"mutability":"mutable","name":"length","nameLocation":"1421:6:3","nodeType":"VariableDeclaration","scope":341,"src":"1413:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1413:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":311,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"1441:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":305,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"1430:4:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3252_$","typeString":"type(library Math)"}},"id":306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:5:3","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":3084,"src":"1430:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1430:17:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1450:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1430:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1413:38:3"},{"assignments":[313],"declarations":[{"constant":false,"id":313,"mutability":"mutable","name":"buffer","nameLocation":"1479:6:3","nodeType":"VariableDeclaration","scope":341,"src":"1465:20:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":312,"name":"string","nodeType":"ElementaryTypeName","src":"1465:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":318,"initialValue":{"arguments":[{"id":316,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"1499:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1488:10:3","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":314,"name":"string","nodeType":"ElementaryTypeName","src":"1492:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1488:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1465:41:3"},{"assignments":[320],"declarations":[{"constant":false,"id":320,"mutability":"mutable","name":"ptr","nameLocation":"1528:3:3","nodeType":"VariableDeclaration","scope":341,"src":"1520:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":321,"nodeType":"VariableDeclarationStatement","src":"1520:11:3"},{"AST":{"nativeSrc":"1570:69:3","nodeType":"YulBlock","src":"1570:69:3","statements":[{"nativeSrc":"1588:37:3","nodeType":"YulAssignment","src":"1588:37:3","value":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"1603:6:3","nodeType":"YulIdentifier","src":"1603:6:3"},{"kind":"number","nativeSrc":"1611:4:3","nodeType":"YulLiteral","src":"1611:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1599:3:3","nodeType":"YulIdentifier","src":"1599:3:3"},"nativeSrc":"1599:17:3","nodeType":"YulFunctionCall","src":"1599:17:3"},{"name":"length","nativeSrc":"1618:6:3","nodeType":"YulIdentifier","src":"1618:6:3"}],"functionName":{"name":"add","nativeSrc":"1595:3:3","nodeType":"YulIdentifier","src":"1595:3:3"},"nativeSrc":"1595:30:3","nodeType":"YulFunctionCall","src":"1595:30:3"},"variableNames":[{"name":"ptr","nativeSrc":"1588:3:3","nodeType":"YulIdentifier","src":"1588:3:3"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":313,"isOffset":false,"isSlot":false,"src":"1603:6:3","valueSize":1},{"declaration":304,"isOffset":false,"isSlot":false,"src":"1618:6:3","valueSize":1},{"declaration":320,"isOffset":false,"isSlot":false,"src":"1588:3:3","valueSize":1}],"flags":["memory-safe"],"id":322,"nodeType":"InlineAssembly","src":"1545:94:3"},{"body":{"id":337,"nodeType":"Block","src":"1665:234:3","statements":[{"expression":{"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1683:5:3","subExpression":{"id":324,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"1683:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":326,"nodeType":"ExpressionStatement","src":"1683:5:3"},{"AST":{"nativeSrc":"1731:86:3","nodeType":"YulBlock","src":"1731:86:3","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1761:3:3","nodeType":"YulIdentifier","src":"1761:3:3"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1775:5:3","nodeType":"YulIdentifier","src":"1775:5:3"},{"kind":"number","nativeSrc":"1782:2:3","nodeType":"YulLiteral","src":"1782:2:3","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1771:3:3","nodeType":"YulIdentifier","src":"1771:3:3"},"nativeSrc":"1771:14:3","nodeType":"YulFunctionCall","src":"1771:14:3"},{"name":"HEX_DIGITS","nativeSrc":"1787:10:3","nodeType":"YulIdentifier","src":"1787:10:3"}],"functionName":{"name":"byte","nativeSrc":"1766:4:3","nodeType":"YulIdentifier","src":"1766:4:3"},"nativeSrc":"1766:32:3","nodeType":"YulFunctionCall","src":"1766:32:3"}],"functionName":{"name":"mstore8","nativeSrc":"1753:7:3","nodeType":"YulIdentifier","src":"1753:7:3"},"nativeSrc":"1753:46:3","nodeType":"YulFunctionCall","src":"1753:46:3"},"nativeSrc":"1753:46:3","nodeType":"YulExpressionStatement","src":"1753:46:3"}]},"evmVersion":"cancun","externalReferences":[{"declaration":243,"isOffset":false,"isSlot":false,"src":"1787:10:3","valueSize":1},{"declaration":320,"isOffset":false,"isSlot":false,"src":"1761:3:3","valueSize":1},{"declaration":298,"isOffset":false,"isSlot":false,"src":"1775:5:3","valueSize":1}],"flags":["memory-safe"],"id":327,"nodeType":"InlineAssembly","src":"1706:111:3"},{"expression":{"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":328,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"1834:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1843:2:3","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1834:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":331,"nodeType":"ExpressionStatement","src":"1834:11:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"1867:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1867:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":336,"nodeType":"IfStatement","src":"1863:21:3","trueBody":{"id":335,"nodeType":"Break","src":"1879:5:3"}}]},"condition":{"hexValue":"74727565","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1659:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":338,"nodeType":"WhileStatement","src":"1652:247:3"},{"expression":{"id":339,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"1919:6:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":302,"id":340,"nodeType":"Return","src":"1912:13:3"}]}]},"documentation":{"id":296,"nodeType":"StructuredDocumentation","src":"1213:90:3","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":343,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1317:8:3","nodeType":"FunctionDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"mutability":"mutable","name":"value","nameLocation":"1334:5:3","nodeType":"VariableDeclaration","scope":343,"src":"1326:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":297,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1325:15:3"},"returnParameters":{"id":302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":343,"src":"1364:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":300,"name":"string","nodeType":"ElementaryTypeName","src":"1364:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1363:15:3"},"scope":1631,"src":"1308:634:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":368,"nodeType":"Block","src":"2118:92:3","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":354,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"2149:5:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2157:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2149:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2167:2:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2149:20:3","trueExpression":{"hexValue":"2d","id":357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2161:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"2195:5:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":361,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5161,"src":"2180:10:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$5161_$","typeString":"type(library SignedMath)"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2191:3:3","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":5160,"src":"2180:14:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2180:21:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":360,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"2171:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2171:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2135:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":351,"name":"string","nodeType":"ElementaryTypeName","src":"2135:6:3","typeDescriptions":{}}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2142:6:3","memberName":"concat","nodeType":"MemberAccess","src":"2135:13:3","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":350,"id":367,"nodeType":"Return","src":"2128:75:3"}]},"documentation":{"id":344,"nodeType":"StructuredDocumentation","src":"1948:89:3","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":369,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"2051:14:3","nodeType":"FunctionDefinition","parameters":{"id":347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":346,"mutability":"mutable","name":"value","nameLocation":"2073:5:3","nodeType":"VariableDeclaration","scope":369,"src":"2066:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":345,"name":"int256","nodeType":"ElementaryTypeName","src":"2066:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2065:14:3"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":369,"src":"2103:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":348,"name":"string","nodeType":"ElementaryTypeName","src":"2103:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2102:15:3"},"scope":1631,"src":"2042:168:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":388,"nodeType":"Block","src":"2389:100:3","statements":[{"id":387,"nodeType":"UncheckedBlock","src":"2399:84:3","statements":[{"expression":{"arguments":[{"id":378,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"2442:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"2461:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":379,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"2449:4:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3252_$","typeString":"type(library Math)"}},"id":380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2454:6:3","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":3195,"src":"2449:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2449:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2470:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2449:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":377,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[389,472,492],"referencedDeclaration":472,"src":"2430:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2430:42:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":376,"id":386,"nodeType":"Return","src":"2423:49:3"}]}]},"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2216:94:3","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":389,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2324:11:3","nodeType":"FunctionDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":372,"mutability":"mutable","name":"value","nameLocation":"2344:5:3","nodeType":"VariableDeclaration","scope":389,"src":"2336:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2336:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2335:15:3"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":389,"src":"2374:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":374,"name":"string","nodeType":"ElementaryTypeName","src":"2374:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2373:15:3"},"scope":1631,"src":"2315:174:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":471,"nodeType":"Block","src":"2702:435:3","statements":[{"assignments":[400],"declarations":[{"constant":false,"id":400,"mutability":"mutable","name":"localValue","nameLocation":"2720:10:3","nodeType":"VariableDeclaration","scope":471,"src":"2712:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":399,"name":"uint256","nodeType":"ElementaryTypeName","src":"2712:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":402,"initialValue":{"id":401,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"2733:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2712:26:3"},{"assignments":[404],"declarations":[{"constant":false,"id":404,"mutability":"mutable","name":"buffer","nameLocation":"2761:6:3","nodeType":"VariableDeclaration","scope":471,"src":"2748:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":403,"name":"bytes","nodeType":"ElementaryTypeName","src":"2748:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":413,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2780:1:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":408,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":394,"src":"2784:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2780:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2793:1:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2780:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2770:9:3","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":405,"name":"bytes","nodeType":"ElementaryTypeName","src":"2774:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2770:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2748:47:3"},{"expression":{"id":418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":414,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"2805:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":416,"indexExpression":{"hexValue":"30","id":415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2812:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2805:9:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2817:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2805:15:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":419,"nodeType":"ExpressionStatement","src":"2805:15:3"},{"expression":{"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":420,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"2830:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":422,"indexExpression":{"hexValue":"31","id":421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2837:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2830:9:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2842:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2830:15:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":425,"nodeType":"ExpressionStatement","src":"2830:15:3"},{"body":{"id":454,"nodeType":"Block","src":"2900:95:3","statements":[{"expression":{"id":448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":440,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"2914:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":442,"indexExpression":{"id":441,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"2921:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2914:9:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":443,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"2926:10:3","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":447,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":444,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"2937:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2950:3:3","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2937:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2926:28:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2914:40:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":449,"nodeType":"ExpressionStatement","src":"2914:40:3"},{"expression":{"id":452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":450,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"2968:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2983:1:3","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2968:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":453,"nodeType":"ExpressionStatement","src":"2968:16:3"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":434,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"2888:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2888:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":455,"initializationExpression":{"assignments":[427],"declarations":[{"constant":false,"id":427,"mutability":"mutable","name":"i","nameLocation":"2868:1:3","nodeType":"VariableDeclaration","scope":455,"src":"2860:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":426,"name":"uint256","nodeType":"ElementaryTypeName","src":"2860:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":433,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2872:1:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":429,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":394,"src":"2876:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2872:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2885:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2872:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2860:26:3"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2895:3:3","subExpression":{"id":437,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"2897:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":439,"nodeType":"ExpressionStatement","src":"2895:3:3"},"nodeType":"ForStatement","src":"2855:140:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":456,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"3008:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3022:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3008:15:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":465,"nodeType":"IfStatement","src":"3004:96:3","trueBody":{"id":464,"nodeType":"Block","src":"3025:75:3","statements":[{"errorCall":{"arguments":[{"id":460,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"3075:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":461,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":394,"src":"3082:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":459,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"3046:28:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":463,"nodeType":"RevertStatement","src":"3039:50:3"}]}},{"expression":{"arguments":[{"id":468,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"3123:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3116:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":466,"name":"string","nodeType":"ElementaryTypeName","src":"3116:6:3","typeDescriptions":{}}},"id":469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":398,"id":470,"nodeType":"Return","src":"3109:21:3"}]},"documentation":{"id":390,"nodeType":"StructuredDocumentation","src":"2495:112:3","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":472,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2621:11:3","nodeType":"FunctionDefinition","parameters":{"id":395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":392,"mutability":"mutable","name":"value","nameLocation":"2641:5:3","nodeType":"VariableDeclaration","scope":472,"src":"2633:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":391,"name":"uint256","nodeType":"ElementaryTypeName","src":"2633:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":394,"mutability":"mutable","name":"length","nameLocation":"2656:6:3","nodeType":"VariableDeclaration","scope":472,"src":"2648:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":393,"name":"uint256","nodeType":"ElementaryTypeName","src":"2648:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2632:31:3"},"returnParameters":{"id":398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":472,"src":"2687:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":396,"name":"string","nodeType":"ElementaryTypeName","src":"2687:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2686:15:3"},"scope":1631,"src":"2612:525:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":491,"nodeType":"Block","src":"3369:75:3","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":485,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"3414:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3406:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":483,"name":"uint160","nodeType":"ElementaryTypeName","src":"3406:7:3","typeDescriptions":{}}},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3406:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3398:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"3398:7:3","typeDescriptions":{}}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3398:22:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":488,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"3422:14:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":480,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[389,472,492],"referencedDeclaration":472,"src":"3386:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:51:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":479,"id":490,"nodeType":"Return","src":"3379:58:3"}]},"documentation":{"id":473,"nodeType":"StructuredDocumentation","src":"3143:148:3","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":492,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"3305:11:3","nodeType":"FunctionDefinition","parameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"addr","nameLocation":"3325:4:3","nodeType":"VariableDeclaration","scope":492,"src":"3317:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":474,"name":"address","nodeType":"ElementaryTypeName","src":"3317:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3316:14:3"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":492,"src":"3354:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":477,"name":"string","nodeType":"ElementaryTypeName","src":"3354:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3353:15:3"},"scope":1631,"src":"3296:148:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":556,"nodeType":"Block","src":"3701:642:3","statements":[{"assignments":[501],"declarations":[{"constant":false,"id":501,"mutability":"mutable","name":"buffer","nameLocation":"3724:6:3","nodeType":"VariableDeclaration","scope":556,"src":"3711:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":500,"name":"bytes","nodeType":"ElementaryTypeName","src":"3711:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":508,"initialValue":{"arguments":[{"arguments":[{"id":505,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":495,"src":"3751:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":504,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[389,472,492],"referencedDeclaration":492,"src":"3739:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3739:17:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3733:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":502,"name":"bytes","nodeType":"ElementaryTypeName","src":"3733:5:3","typeDescriptions":{}}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3733:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3711:46:3"},{"assignments":[510],"declarations":[{"constant":false,"id":510,"mutability":"mutable","name":"hashValue","nameLocation":"3850:9:3","nodeType":"VariableDeclaration","scope":556,"src":"3842:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":509,"name":"uint256","nodeType":"ElementaryTypeName","src":"3842:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":511,"nodeType":"VariableDeclarationStatement","src":"3842:17:3"},{"AST":{"nativeSrc":"3894:78:3","nodeType":"YulBlock","src":"3894:78:3","statements":[{"nativeSrc":"3908:54:3","nodeType":"YulAssignment","src":"3908:54:3","value":{"arguments":[{"kind":"number","nativeSrc":"3925:2:3","nodeType":"YulLiteral","src":"3925:2:3","type":"","value":"96"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"3943:6:3","nodeType":"YulIdentifier","src":"3943:6:3"},{"kind":"number","nativeSrc":"3951:4:3","nodeType":"YulLiteral","src":"3951:4:3","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"3939:3:3","nodeType":"YulIdentifier","src":"3939:3:3"},"nativeSrc":"3939:17:3","nodeType":"YulFunctionCall","src":"3939:17:3"},{"kind":"number","nativeSrc":"3958:2:3","nodeType":"YulLiteral","src":"3958:2:3","type":"","value":"40"}],"functionName":{"name":"keccak256","nativeSrc":"3929:9:3","nodeType":"YulIdentifier","src":"3929:9:3"},"nativeSrc":"3929:32:3","nodeType":"YulFunctionCall","src":"3929:32:3"}],"functionName":{"name":"shr","nativeSrc":"3921:3:3","nodeType":"YulIdentifier","src":"3921:3:3"},"nativeSrc":"3921:41:3","nodeType":"YulFunctionCall","src":"3921:41:3"},"variableNames":[{"name":"hashValue","nativeSrc":"3908:9:3","nodeType":"YulIdentifier","src":"3908:9:3"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":501,"isOffset":false,"isSlot":false,"src":"3943:6:3","valueSize":1},{"declaration":510,"isOffset":false,"isSlot":false,"src":"3908:9:3","valueSize":1}],"flags":["memory-safe"],"id":512,"nodeType":"InlineAssembly","src":"3869:103:3"},{"body":{"id":549,"nodeType":"Block","src":"4015:291:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"4121:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4133:3:3","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4121:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"37","id":526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4139:1:3","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"4121:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":530,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"4150:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":532,"indexExpression":{"id":531,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"4157:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4150:9:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4144:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":528,"name":"uint8","nodeType":"ElementaryTypeName","src":"4144:5:3","typeDescriptions":{}}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4144:16:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4163:2:3","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"4144:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4121:44:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":544,"nodeType":"IfStatement","src":"4117:150:3","trueBody":{"id":543,"nodeType":"Block","src":"4167:100:3","statements":[{"expression":{"id":541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":537,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"4235:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":539,"indexExpression":{"id":538,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"4242:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4235:9:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"hexValue":"30783230","id":540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4248:4:3","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"4235:17:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":542,"nodeType":"ExpressionStatement","src":"4235:17:3"}]}},{"expression":{"id":547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":545,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"4280:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4294:1:3","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4280:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":548,"nodeType":"ExpressionStatement","src":"4280:15:3"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":517,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"4003:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4007:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4003:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":550,"initializationExpression":{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"i","nameLocation":"3995:1:3","nodeType":"VariableDeclaration","scope":550,"src":"3987:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"3987:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":516,"initialValue":{"hexValue":"3431","id":515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3999:2:3","typeDescriptions":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"value":"41"},"nodeType":"VariableDeclarationStatement","src":"3987:14:3"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"4010:3:3","subExpression":{"id":520,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"4012:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":522,"nodeType":"ExpressionStatement","src":"4010:3:3"},"nodeType":"ForStatement","src":"3982:324:3"},{"expression":{"arguments":[{"id":553,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"4329:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4322:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":551,"name":"string","nodeType":"ElementaryTypeName","src":"4322:6:3","typeDescriptions":{}}},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":499,"id":555,"nodeType":"Return","src":"4315:21:3"}]},"documentation":{"id":493,"nodeType":"StructuredDocumentation","src":"3450:165:3","text":" @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."},"id":557,"implemented":true,"kind":"function","modifiers":[],"name":"toChecksumHexString","nameLocation":"3629:19:3","nodeType":"FunctionDefinition","parameters":{"id":496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":495,"mutability":"mutable","name":"addr","nameLocation":"3657:4:3","nodeType":"VariableDeclaration","scope":557,"src":"3649:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":494,"name":"address","nodeType":"ElementaryTypeName","src":"3649:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3648:14:3"},"returnParameters":{"id":499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":498,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":557,"src":"3686:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":497,"name":"string","nodeType":"ElementaryTypeName","src":"3686:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3685:15:3"},"scope":1631,"src":"3620:723:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":593,"nodeType":"Block","src":"4498:104:3","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":569,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":560,"src":"4521:1:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4515:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":567,"name":"bytes","nodeType":"ElementaryTypeName","src":"4515:5:3","typeDescriptions":{}}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4515:8:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4524:6:3","memberName":"length","nodeType":"MemberAccess","src":"4515:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":574,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"4540:1:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4534:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":572,"name":"bytes","nodeType":"ElementaryTypeName","src":"4534:5:3","typeDescriptions":{}}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4534:8:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4543:6:3","memberName":"length","nodeType":"MemberAccess","src":"4534:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4515:34:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":581,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":560,"src":"4569:1:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":579,"name":"bytes","nodeType":"ElementaryTypeName","src":"4563:5:3","typeDescriptions":{}}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:8:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":578,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4553:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4553:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":587,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"4592:1:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4586:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":585,"name":"bytes","nodeType":"ElementaryTypeName","src":"4586:5:3","typeDescriptions":{}}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4586:8:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":584,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4576:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4576:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4553:42:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4515:80:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":566,"id":592,"nodeType":"Return","src":"4508:87:3"}]},"documentation":{"id":558,"nodeType":"StructuredDocumentation","src":"4349:66:3","text":" @dev Returns true if the two strings are equal."},"id":594,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"4429:5:3","nodeType":"FunctionDefinition","parameters":{"id":563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":560,"mutability":"mutable","name":"a","nameLocation":"4449:1:3","nodeType":"VariableDeclaration","scope":594,"src":"4435:15:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":559,"name":"string","nodeType":"ElementaryTypeName","src":"4435:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":562,"mutability":"mutable","name":"b","nameLocation":"4466:1:3","nodeType":"VariableDeclaration","scope":594,"src":"4452:15:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":561,"name":"string","nodeType":"ElementaryTypeName","src":"4452:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4434:34:3"},"returnParameters":{"id":566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":594,"src":"4492:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":564,"name":"bool","nodeType":"ElementaryTypeName","src":"4492:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4491:6:3"},"scope":1631,"src":"4420:182:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":612,"nodeType":"Block","src":"4899:64:3","statements":[{"expression":{"arguments":[{"id":603,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"4926:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4933:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":607,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"4942:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4936:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":605,"name":"bytes","nodeType":"ElementaryTypeName","src":"4936:5:3","typeDescriptions":{}}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4936:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4949:6:3","memberName":"length","nodeType":"MemberAccess","src":"4936:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":602,"name":"parseUint","nodeType":"Identifier","overloadedDeclarations":[613,644],"referencedDeclaration":644,"src":"4916:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4916:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":601,"id":611,"nodeType":"Return","src":"4909:47:3"}]},"documentation":{"id":595,"nodeType":"StructuredDocumentation","src":"4608:214:3","text":" @dev Parse a decimal string and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":613,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"4836:9:3","nodeType":"FunctionDefinition","parameters":{"id":598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":597,"mutability":"mutable","name":"input","nameLocation":"4860:5:3","nodeType":"VariableDeclaration","scope":613,"src":"4846:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":596,"name":"string","nodeType":"ElementaryTypeName","src":"4846:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4845:21:3"},"returnParameters":{"id":601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":613,"src":"4890:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":599,"name":"uint256","nodeType":"ElementaryTypeName","src":"4890:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4889:9:3"},"scope":1631,"src":"4827:136:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":643,"nodeType":"Block","src":"5368:153:3","statements":[{"assignments":[626,628],"declarations":[{"constant":false,"id":626,"mutability":"mutable","name":"success","nameLocation":"5384:7:3","nodeType":"VariableDeclaration","scope":643,"src":"5379:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":625,"name":"bool","nodeType":"ElementaryTypeName","src":"5379:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":628,"mutability":"mutable","name":"value","nameLocation":"5401:5:3","nodeType":"VariableDeclaration","scope":643,"src":"5393:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":627,"name":"uint256","nodeType":"ElementaryTypeName","src":"5393:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":634,"initialValue":{"arguments":[{"id":630,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"5423:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":631,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"5430:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":632,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":620,"src":"5437:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":629,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[665,702],"referencedDeclaration":702,"src":"5410:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5410:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5378:63:3"},{"condition":{"id":636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5455:8:3","subExpression":{"id":635,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":626,"src":"5456:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":640,"nodeType":"IfStatement","src":"5451:41:3","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":637,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"5472:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5472:20:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":639,"nodeType":"RevertStatement","src":"5465:27:3"}},{"expression":{"id":641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":628,"src":"5509:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":624,"id":642,"nodeType":"Return","src":"5502:12:3"}]},"documentation":{"id":614,"nodeType":"StructuredDocumentation","src":"4969:294:3","text":" @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":644,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5277:9:3","nodeType":"FunctionDefinition","parameters":{"id":621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":616,"mutability":"mutable","name":"input","nameLocation":"5301:5:3","nodeType":"VariableDeclaration","scope":644,"src":"5287:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":615,"name":"string","nodeType":"ElementaryTypeName","src":"5287:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":618,"mutability":"mutable","name":"begin","nameLocation":"5316:5:3","nodeType":"VariableDeclaration","scope":644,"src":"5308:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":617,"name":"uint256","nodeType":"ElementaryTypeName","src":"5308:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":620,"mutability":"mutable","name":"end","nameLocation":"5331:3:3","nodeType":"VariableDeclaration","scope":644,"src":"5323:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":619,"name":"uint256","nodeType":"ElementaryTypeName","src":"5323:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5286:49:3"},"returnParameters":{"id":624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":623,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":644,"src":"5359:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":622,"name":"uint256","nodeType":"ElementaryTypeName","src":"5359:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5358:9:3"},"scope":1631,"src":"5268:253:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":664,"nodeType":"Block","src":"5842:83:3","statements":[{"expression":{"arguments":[{"id":655,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":647,"src":"5888:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5895:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":659,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":647,"src":"5904:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":657,"name":"bytes","nodeType":"ElementaryTypeName","src":"5898:5:3","typeDescriptions":{}}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5911:6:3","memberName":"length","nodeType":"MemberAccess","src":"5898:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":654,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"5859:28:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5859:59:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":653,"id":663,"nodeType":"Return","src":"5852:66:3"}]},"documentation":{"id":645,"nodeType":"StructuredDocumentation","src":"5527:215:3","text":" @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":665,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"5756:12:3","nodeType":"FunctionDefinition","parameters":{"id":648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":647,"mutability":"mutable","name":"input","nameLocation":"5783:5:3","nodeType":"VariableDeclaration","scope":665,"src":"5769:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":646,"name":"string","nodeType":"ElementaryTypeName","src":"5769:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5768:21:3"},"returnParameters":{"id":653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":650,"mutability":"mutable","name":"success","nameLocation":"5818:7:3","nodeType":"VariableDeclaration","scope":665,"src":"5813:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":649,"name":"bool","nodeType":"ElementaryTypeName","src":"5813:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":652,"mutability":"mutable","name":"value","nameLocation":"5835:5:3","nodeType":"VariableDeclaration","scope":665,"src":"5827:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":651,"name":"uint256","nodeType":"ElementaryTypeName","src":"5827:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5812:29:3"},"scope":1631,"src":"5747:178:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":701,"nodeType":"Block","src":"6327:144:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":679,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6341:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":682,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"6353:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6347:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":680,"name":"bytes","nodeType":"ElementaryTypeName","src":"6347:5:3","typeDescriptions":{}}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6347:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6360:6:3","memberName":"length","nodeType":"MemberAccess","src":"6347:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6341:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":686,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"6370:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":687,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6378:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6370:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6341:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":694,"nodeType":"IfStatement","src":"6337:63:3","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6391:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6398:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":692,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6390:10:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":678,"id":693,"nodeType":"Return","src":"6383:17:3"}},{"expression":{"arguments":[{"id":696,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"6446:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":697,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"6453:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":698,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6460:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":695,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"6417:28:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6417:47:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":678,"id":700,"nodeType":"Return","src":"6410:54:3"}]},"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"5931:238:3","text":" @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":702,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6183:12:3","nodeType":"FunctionDefinition","parameters":{"id":673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":668,"mutability":"mutable","name":"input","nameLocation":"6219:5:3","nodeType":"VariableDeclaration","scope":702,"src":"6205:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":667,"name":"string","nodeType":"ElementaryTypeName","src":"6205:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":670,"mutability":"mutable","name":"begin","nameLocation":"6242:5:3","nodeType":"VariableDeclaration","scope":702,"src":"6234:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"6234:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":672,"mutability":"mutable","name":"end","nameLocation":"6265:3:3","nodeType":"VariableDeclaration","scope":702,"src":"6257:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":671,"name":"uint256","nodeType":"ElementaryTypeName","src":"6257:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6195:79:3"},"returnParameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":675,"mutability":"mutable","name":"success","nameLocation":"6303:7:3","nodeType":"VariableDeclaration","scope":702,"src":"6298:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":674,"name":"bool","nodeType":"ElementaryTypeName","src":"6298:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":677,"mutability":"mutable","name":"value","nameLocation":"6320:5:3","nodeType":"VariableDeclaration","scope":702,"src":"6312:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":676,"name":"uint256","nodeType":"ElementaryTypeName","src":"6312:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6297:29:3"},"scope":1631,"src":"6174:297:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":771,"nodeType":"Block","src":"6874:347:3","statements":[{"assignments":[717],"declarations":[{"constant":false,"id":717,"mutability":"mutable","name":"buffer","nameLocation":"6897:6:3","nodeType":"VariableDeclaration","scope":771,"src":"6884:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":716,"name":"bytes","nodeType":"ElementaryTypeName","src":"6884:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":722,"initialValue":{"arguments":[{"id":720,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"6912:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6906:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":718,"name":"bytes","nodeType":"ElementaryTypeName","src":"6906:5:3","typeDescriptions":{}}},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6906:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6884:34:3"},{"assignments":[724],"declarations":[{"constant":false,"id":724,"mutability":"mutable","name":"result","nameLocation":"6937:6:3","nodeType":"VariableDeclaration","scope":771,"src":"6929:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":723,"name":"uint256","nodeType":"ElementaryTypeName","src":"6929:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":726,"initialValue":{"hexValue":"30","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6946:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6929:18:3"},{"body":{"id":765,"nodeType":"Block","src":"6995:189:3","statements":[{"assignments":[738],"declarations":[{"constant":false,"id":738,"mutability":"mutable","name":"chr","nameLocation":"7015:3:3","nodeType":"VariableDeclaration","scope":765,"src":"7009:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":737,"name":"uint8","nodeType":"ElementaryTypeName","src":"7009:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":748,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":743,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"7064:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":744,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"7072:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":742,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"7041:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7041:33:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7034:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":740,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7034:6:3","typeDescriptions":{}}},"id":746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7034:41:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":739,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1452,"src":"7021:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7021:55:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7009:67:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":749,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"7094:3:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"39","id":750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7100:1:3","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"7094:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":756,"nodeType":"IfStatement","src":"7090:30:3","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7111:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7118:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":754,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7110:10:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":715,"id":755,"nodeType":"Return","src":"7103:17:3"}},{"expression":{"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":757,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":724,"src":"7134:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3130","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7144:2:3","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7134:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":760,"nodeType":"ExpressionStatement","src":"7134:12:3"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":761,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":724,"src":"7160:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":762,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"7170:3:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7160:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":764,"nodeType":"ExpressionStatement","src":"7160:13:3"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"6981:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":732,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"6985:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6981:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":766,"initializationExpression":{"assignments":[728],"declarations":[{"constant":false,"id":728,"mutability":"mutable","name":"i","nameLocation":"6970:1:3","nodeType":"VariableDeclaration","scope":766,"src":"6962:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":727,"name":"uint256","nodeType":"ElementaryTypeName","src":"6962:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":730,"initialValue":{"id":729,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":707,"src":"6974:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6962:17:3"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6990:3:3","subExpression":{"id":734,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"6992:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":736,"nodeType":"ExpressionStatement","src":"6990:3:3"},"nodeType":"ForStatement","src":"6957:227:3"},{"expression":{"components":[{"hexValue":"74727565","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7201:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":768,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":724,"src":"7207:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":769,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7200:14:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":715,"id":770,"nodeType":"Return","src":"7193:21:3"}]},"documentation":{"id":703,"nodeType":"StructuredDocumentation","src":"6477:224:3","text":" @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":772,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseUintUncheckedBounds","nameLocation":"6715:28:3","nodeType":"FunctionDefinition","parameters":{"id":710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"input","nameLocation":"6767:5:3","nodeType":"VariableDeclaration","scope":772,"src":"6753:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":704,"name":"string","nodeType":"ElementaryTypeName","src":"6753:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":707,"mutability":"mutable","name":"begin","nameLocation":"6790:5:3","nodeType":"VariableDeclaration","scope":772,"src":"6782:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":706,"name":"uint256","nodeType":"ElementaryTypeName","src":"6782:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":709,"mutability":"mutable","name":"end","nameLocation":"6813:3:3","nodeType":"VariableDeclaration","scope":772,"src":"6805:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":708,"name":"uint256","nodeType":"ElementaryTypeName","src":"6805:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6743:79:3"},"returnParameters":{"id":715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":712,"mutability":"mutable","name":"success","nameLocation":"6850:7:3","nodeType":"VariableDeclaration","scope":772,"src":"6845:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":711,"name":"bool","nodeType":"ElementaryTypeName","src":"6845:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":714,"mutability":"mutable","name":"value","nameLocation":"6867:5:3","nodeType":"VariableDeclaration","scope":772,"src":"6859:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":713,"name":"uint256","nodeType":"ElementaryTypeName","src":"6859:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6844:29:3"},"scope":1631,"src":"6706:515:3","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":790,"nodeType":"Block","src":"7518:63:3","statements":[{"expression":{"arguments":[{"id":781,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7544:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7551:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":785,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7560:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7554:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":783,"name":"bytes","nodeType":"ElementaryTypeName","src":"7554:5:3","typeDescriptions":{}}},"id":786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7554:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7567:6:3","memberName":"length","nodeType":"MemberAccess","src":"7554:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":780,"name":"parseInt","nodeType":"Identifier","overloadedDeclarations":[791,822],"referencedDeclaration":822,"src":"7535:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (int256)"}},"id":788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7535:39:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":779,"id":789,"nodeType":"Return","src":"7528:46:3"}]},"documentation":{"id":773,"nodeType":"StructuredDocumentation","src":"7227:216:3","text":" @dev Parse a decimal string and returns the value as a `int256`.\n Requirements:\n - The string must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":791,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7457:8:3","nodeType":"FunctionDefinition","parameters":{"id":776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":775,"mutability":"mutable","name":"input","nameLocation":"7480:5:3","nodeType":"VariableDeclaration","scope":791,"src":"7466:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":774,"name":"string","nodeType":"ElementaryTypeName","src":"7466:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7465:21:3"},"returnParameters":{"id":779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":791,"src":"7510:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":777,"name":"int256","nodeType":"ElementaryTypeName","src":"7510:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7509:8:3"},"scope":1631,"src":"7448:133:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":821,"nodeType":"Block","src":"7986:151:3","statements":[{"assignments":[804,806],"declarations":[{"constant":false,"id":804,"mutability":"mutable","name":"success","nameLocation":"8002:7:3","nodeType":"VariableDeclaration","scope":821,"src":"7997:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":803,"name":"bool","nodeType":"ElementaryTypeName","src":"7997:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":806,"mutability":"mutable","name":"value","nameLocation":"8018:5:3","nodeType":"VariableDeclaration","scope":821,"src":"8011:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":805,"name":"int256","nodeType":"ElementaryTypeName","src":"8011:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":812,"initialValue":{"arguments":[{"id":808,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"8039:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":809,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"8046:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":810,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"8053:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":807,"name":"tryParseInt","nodeType":"Identifier","overloadedDeclarations":[843,885],"referencedDeclaration":885,"src":"8027:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8027:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"nodeType":"VariableDeclarationStatement","src":"7996:61:3"},{"condition":{"id":814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8071:8:3","subExpression":{"id":813,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":804,"src":"8072:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":818,"nodeType":"IfStatement","src":"8067:41:3","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":815,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"8088:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8088:20:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":817,"nodeType":"RevertStatement","src":"8081:27:3"}},{"expression":{"id":819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"8125:5:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":802,"id":820,"nodeType":"Return","src":"8118:12:3"}]},"documentation":{"id":792,"nodeType":"StructuredDocumentation","src":"7587:296:3","text":" @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":822,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7897:8:3","nodeType":"FunctionDefinition","parameters":{"id":799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":794,"mutability":"mutable","name":"input","nameLocation":"7920:5:3","nodeType":"VariableDeclaration","scope":822,"src":"7906:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":793,"name":"string","nodeType":"ElementaryTypeName","src":"7906:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":796,"mutability":"mutable","name":"begin","nameLocation":"7935:5:3","nodeType":"VariableDeclaration","scope":822,"src":"7927:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"7927:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":798,"mutability":"mutable","name":"end","nameLocation":"7950:3:3","nodeType":"VariableDeclaration","scope":822,"src":"7942:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":797,"name":"uint256","nodeType":"ElementaryTypeName","src":"7942:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7905:49:3"},"returnParameters":{"id":802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":822,"src":"7978:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":800,"name":"int256","nodeType":"ElementaryTypeName","src":"7978:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7977:8:3"},"scope":1631,"src":"7888:249:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":842,"nodeType":"Block","src":"8528:82:3","statements":[{"expression":{"arguments":[{"id":833,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"8573:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8580:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":837,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"8589:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8583:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":835,"name":"bytes","nodeType":"ElementaryTypeName","src":"8583:5:3","typeDescriptions":{}}},"id":838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8583:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8596:6:3","memberName":"length","nodeType":"MemberAccess","src":"8583:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":832,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1006,"src":"8545:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8545:58:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":831,"id":841,"nodeType":"Return","src":"8538:65:3"}]},"documentation":{"id":823,"nodeType":"StructuredDocumentation","src":"8143:287:3","text":" @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":843,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8444:11:3","nodeType":"FunctionDefinition","parameters":{"id":826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":825,"mutability":"mutable","name":"input","nameLocation":"8470:5:3","nodeType":"VariableDeclaration","scope":843,"src":"8456:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":824,"name":"string","nodeType":"ElementaryTypeName","src":"8456:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8455:21:3"},"returnParameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"success","nameLocation":"8505:7:3","nodeType":"VariableDeclaration","scope":843,"src":"8500:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":827,"name":"bool","nodeType":"ElementaryTypeName","src":"8500:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"value","nameLocation":"8521:5:3","nodeType":"VariableDeclaration","scope":843,"src":"8514:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":829,"name":"int256","nodeType":"ElementaryTypeName","src":"8514:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8499:28:3"},"scope":1631,"src":"8435:175:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":848,"mutability":"constant","name":"ABS_MIN_INT256","nameLocation":"8641:14:3","nodeType":"VariableDeclaration","scope":1631,"src":"8616:50:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":844,"name":"uint256","nodeType":"ElementaryTypeName","src":"8616:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8658:1:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:3:3","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"8658:8:3","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":884,"nodeType":"Block","src":"9132:143:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":862,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"9146:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":865,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"9158:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9152:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":863,"name":"bytes","nodeType":"ElementaryTypeName","src":"9152:5:3","typeDescriptions":{}}},"id":866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9152:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9165:6:3","memberName":"length","nodeType":"MemberAccess","src":"9152:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9146:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":869,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":853,"src":"9175:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":870,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"9183:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9175:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9146:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":877,"nodeType":"IfStatement","src":"9142:63:3","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9196:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9203:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":875,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9195:10:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":861,"id":876,"nodeType":"Return","src":"9188:17:3"}},{"expression":{"arguments":[{"id":879,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"9250:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":880,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":853,"src":"9257:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":881,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"9264:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":878,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1006,"src":"9222:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9222:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":861,"id":883,"nodeType":"Return","src":"9215:53:3"}]},"documentation":{"id":849,"nodeType":"StructuredDocumentation","src":"8673:303:3","text":" @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character or if the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":885,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8990:11:3","nodeType":"FunctionDefinition","parameters":{"id":856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":851,"mutability":"mutable","name":"input","nameLocation":"9025:5:3","nodeType":"VariableDeclaration","scope":885,"src":"9011:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":850,"name":"string","nodeType":"ElementaryTypeName","src":"9011:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":853,"mutability":"mutable","name":"begin","nameLocation":"9048:5:3","nodeType":"VariableDeclaration","scope":885,"src":"9040:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":852,"name":"uint256","nodeType":"ElementaryTypeName","src":"9040:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":855,"mutability":"mutable","name":"end","nameLocation":"9071:3:3","nodeType":"VariableDeclaration","scope":885,"src":"9063:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":854,"name":"uint256","nodeType":"ElementaryTypeName","src":"9063:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9001:79:3"},"returnParameters":{"id":861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":858,"mutability":"mutable","name":"success","nameLocation":"9109:7:3","nodeType":"VariableDeclaration","scope":885,"src":"9104:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":857,"name":"bool","nodeType":"ElementaryTypeName","src":"9104:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":860,"mutability":"mutable","name":"value","nameLocation":"9125:5:3","nodeType":"VariableDeclaration","scope":885,"src":"9118:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":859,"name":"int256","nodeType":"ElementaryTypeName","src":"9118:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9103:28:3"},"scope":1631,"src":"8981:294:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1005,"nodeType":"Block","src":"9675:812:3","statements":[{"assignments":[900],"declarations":[{"constant":false,"id":900,"mutability":"mutable","name":"buffer","nameLocation":"9698:6:3","nodeType":"VariableDeclaration","scope":1005,"src":"9685:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":899,"name":"bytes","nodeType":"ElementaryTypeName","src":"9685:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":905,"initialValue":{"arguments":[{"id":903,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"9713:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9707:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":901,"name":"bytes","nodeType":"ElementaryTypeName","src":"9707:5:3","typeDescriptions":{}}},"id":904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9707:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"9685:34:3"},{"assignments":[907],"declarations":[{"constant":false,"id":907,"mutability":"mutable","name":"sign","nameLocation":"9783:4:3","nodeType":"VariableDeclaration","scope":1005,"src":"9776:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":906,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9776:6:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":923,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":908,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"9790:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":909,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"9799:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9790:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":918,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"9847:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":919,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"9855:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":917,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"9824:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9824:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9817:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":915,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9817:6:3","typeDescriptions":{}}},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9817:45:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9790:72:3","trueExpression":{"arguments":[{"hexValue":"30","id":913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9812:1:3","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":912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9805:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":911,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9805:6:3","typeDescriptions":{}}},"id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9805:9:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"9776:86:3"},{"assignments":[925],"declarations":[{"constant":false,"id":925,"mutability":"mutable","name":"positiveSign","nameLocation":"9948:12:3","nodeType":"VariableDeclaration","scope":1005,"src":"9943:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":924,"name":"bool","nodeType":"ElementaryTypeName","src":"9943:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":932,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":926,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"9963:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2b","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9978:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""},"value":"+"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""}],"id":928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9971:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":927,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9971:6:3","typeDescriptions":{}}},"id":930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9971:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"9963:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9943:39:3"},{"assignments":[934],"declarations":[{"constant":false,"id":934,"mutability":"mutable","name":"negativeSign","nameLocation":"9997:12:3","nodeType":"VariableDeclaration","scope":1005,"src":"9992:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":933,"name":"bool","nodeType":"ElementaryTypeName","src":"9992:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":941,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":935,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"10012:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2d","id":938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10027:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""}],"id":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10020:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":936,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10020:6:3","typeDescriptions":{}}},"id":939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10020:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10012:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9992:39:3"},{"assignments":[943],"declarations":[{"constant":false,"id":943,"mutability":"mutable","name":"offset","nameLocation":"10049:6:3","nodeType":"VariableDeclaration","scope":1005,"src":"10041:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint256","nodeType":"ElementaryTypeName","src":"10041:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":950,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":944,"name":"positiveSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"10059:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":945,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"10075:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10059:28:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":947,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10058:30:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10089:6:3","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"10058:37:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10058:39:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10041:56:3"},{"assignments":[952,954],"declarations":[{"constant":false,"id":952,"mutability":"mutable","name":"absSuccess","nameLocation":"10114:10:3","nodeType":"VariableDeclaration","scope":1005,"src":"10109:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":951,"name":"bool","nodeType":"ElementaryTypeName","src":"10109:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":954,"mutability":"mutable","name":"absValue","nameLocation":"10134:8:3","nodeType":"VariableDeclaration","scope":1005,"src":"10126:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":953,"name":"uint256","nodeType":"ElementaryTypeName","src":"10126:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":962,"initialValue":{"arguments":[{"id":956,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"10159:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":957,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"10166:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":958,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"10174:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10166:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":960,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"10182:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":955,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[665,702],"referencedDeclaration":702,"src":"10146:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10146:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10108:78:3"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":963,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"10201:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":964,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"10215:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":965,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":848,"src":"10226:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10215:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10201:39:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":983,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"10343:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":984,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"10357:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10343:26:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":986,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"10373:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":987,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":848,"src":"10385:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10373:26:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10343:56:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"components":[{"hexValue":"66616c7365","id":999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10471:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10478:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1001,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10470:10:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":898,"id":1002,"nodeType":"Return","src":"10463:17:3"},"id":1003,"nodeType":"IfStatement","src":"10339:141:3","trueBody":{"id":998,"nodeType":"Block","src":"10401:56:3","statements":[{"expression":{"components":[{"hexValue":"74727565","id":990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10423:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"arguments":[{"id":993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10434:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":992,"name":"int256","nodeType":"ElementaryTypeName","src":"10434:6:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":991,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10429:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10429:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10442:3:3","memberName":"min","nodeType":"MemberAccess","src":"10429:16:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":996,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10422:24:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":898,"id":997,"nodeType":"Return","src":"10415:31:3"}]}},"id":1004,"nodeType":"IfStatement","src":"10197:283:3","trueBody":{"id":982,"nodeType":"Block","src":"10242:91:3","statements":[{"expression":{"components":[{"hexValue":"74727565","id":968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10264:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"condition":{"id":969,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"10270:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":977,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"10312:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10305:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":975,"name":"int256","nodeType":"ElementaryTypeName","src":"10305:6:3","typeDescriptions":{}}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10305:16:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10270:51:3","trueExpression":{"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10285:17:3","subExpression":{"arguments":[{"id":972,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"10293:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10286:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":970,"name":"int256","nodeType":"ElementaryTypeName","src":"10286:6:3","typeDescriptions":{}}},"id":973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10286:16:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10263:59:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":898,"id":981,"nodeType":"Return","src":"10256:66:3"}]}}]},"documentation":{"id":886,"nodeType":"StructuredDocumentation","src":"9281:223:3","text":" @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":1006,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseIntUncheckedBounds","nameLocation":"9518:27:3","nodeType":"FunctionDefinition","parameters":{"id":893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"input","nameLocation":"9569:5:3","nodeType":"VariableDeclaration","scope":1006,"src":"9555:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":887,"name":"string","nodeType":"ElementaryTypeName","src":"9555:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":890,"mutability":"mutable","name":"begin","nameLocation":"9592:5:3","nodeType":"VariableDeclaration","scope":1006,"src":"9584:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":889,"name":"uint256","nodeType":"ElementaryTypeName","src":"9584:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":892,"mutability":"mutable","name":"end","nameLocation":"9615:3:3","nodeType":"VariableDeclaration","scope":1006,"src":"9607:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":891,"name":"uint256","nodeType":"ElementaryTypeName","src":"9607:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9545:79:3"},"returnParameters":{"id":898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":895,"mutability":"mutable","name":"success","nameLocation":"9652:7:3","nodeType":"VariableDeclaration","scope":1006,"src":"9647:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":894,"name":"bool","nodeType":"ElementaryTypeName","src":"9647:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":897,"mutability":"mutable","name":"value","nameLocation":"9668:5:3","nodeType":"VariableDeclaration","scope":1006,"src":"9661:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":896,"name":"int256","nodeType":"ElementaryTypeName","src":"9661:6:3","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9646:28:3"},"scope":1631,"src":"9509:978:3","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1024,"nodeType":"Block","src":"10832:67:3","statements":[{"expression":{"arguments":[{"id":1015,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1009,"src":"10862:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10869:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1019,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1009,"src":"10878:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10872:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1017,"name":"bytes","nodeType":"ElementaryTypeName","src":"10872:5:3","typeDescriptions":{}}},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10872:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10885:6:3","memberName":"length","nodeType":"MemberAccess","src":"10872:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1014,"name":"parseHexUint","nodeType":"Identifier","overloadedDeclarations":[1025,1056],"referencedDeclaration":1056,"src":"10849:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10849:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1013,"id":1023,"nodeType":"Return","src":"10842:50:3"}]},"documentation":{"id":1007,"nodeType":"StructuredDocumentation","src":"10493:259:3","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":1025,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"10766:12:3","nodeType":"FunctionDefinition","parameters":{"id":1010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1009,"mutability":"mutable","name":"input","nameLocation":"10793:5:3","nodeType":"VariableDeclaration","scope":1025,"src":"10779:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1008,"name":"string","nodeType":"ElementaryTypeName","src":"10779:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10778:21:3"},"returnParameters":{"id":1013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1012,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1025,"src":"10823:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1011,"name":"uint256","nodeType":"ElementaryTypeName","src":"10823:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10822:9:3"},"scope":1631,"src":"10757:142:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1055,"nodeType":"Block","src":"11320:156:3","statements":[{"assignments":[1038,1040],"declarations":[{"constant":false,"id":1038,"mutability":"mutable","name":"success","nameLocation":"11336:7:3","nodeType":"VariableDeclaration","scope":1055,"src":"11331:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1037,"name":"bool","nodeType":"ElementaryTypeName","src":"11331:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1040,"mutability":"mutable","name":"value","nameLocation":"11353:5:3","nodeType":"VariableDeclaration","scope":1055,"src":"11345:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1039,"name":"uint256","nodeType":"ElementaryTypeName","src":"11345:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1046,"initialValue":{"arguments":[{"id":1042,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"11378:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1043,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"11385:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1044,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1032,"src":"11392:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1041,"name":"tryParseHexUint","nodeType":"Identifier","overloadedDeclarations":[1077,1114],"referencedDeclaration":1114,"src":"11362:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":1045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11362:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11330:66:3"},{"condition":{"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11410:8:3","subExpression":{"id":1047,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"11411:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1052,"nodeType":"IfStatement","src":"11406:41:3","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1049,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"11427:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11427:20:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1051,"nodeType":"RevertStatement","src":"11420:27:3"}},{"expression":{"id":1053,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"11464:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1036,"id":1054,"nodeType":"Return","src":"11457:12:3"}]},"documentation":{"id":1026,"nodeType":"StructuredDocumentation","src":"10905:307:3","text":" @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":1056,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11226:12:3","nodeType":"FunctionDefinition","parameters":{"id":1033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1028,"mutability":"mutable","name":"input","nameLocation":"11253:5:3","nodeType":"VariableDeclaration","scope":1056,"src":"11239:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1027,"name":"string","nodeType":"ElementaryTypeName","src":"11239:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1030,"mutability":"mutable","name":"begin","nameLocation":"11268:5:3","nodeType":"VariableDeclaration","scope":1056,"src":"11260:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"11260:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1032,"mutability":"mutable","name":"end","nameLocation":"11283:3:3","nodeType":"VariableDeclaration","scope":1056,"src":"11275:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1031,"name":"uint256","nodeType":"ElementaryTypeName","src":"11275:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11238:49:3"},"returnParameters":{"id":1036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1056,"src":"11311:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1034,"name":"uint256","nodeType":"ElementaryTypeName","src":"11311:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11310:9:3"},"scope":1631,"src":"11217:259:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1076,"nodeType":"Block","src":"11803:86:3","statements":[{"expression":{"arguments":[{"id":1067,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"11852:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11859:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1071,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"11868:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11862:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1069,"name":"bytes","nodeType":"ElementaryTypeName","src":"11862:5:3","typeDescriptions":{}}},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11862:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11875:6:3","memberName":"length","nodeType":"MemberAccess","src":"11862:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1066,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"11820:31:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11820:62:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1065,"id":1075,"nodeType":"Return","src":"11813:69:3"}]},"documentation":{"id":1057,"nodeType":"StructuredDocumentation","src":"11482:218:3","text":" @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":1077,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"11714:15:3","nodeType":"FunctionDefinition","parameters":{"id":1060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1059,"mutability":"mutable","name":"input","nameLocation":"11744:5:3","nodeType":"VariableDeclaration","scope":1077,"src":"11730:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1058,"name":"string","nodeType":"ElementaryTypeName","src":"11730:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11729:21:3"},"returnParameters":{"id":1065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1062,"mutability":"mutable","name":"success","nameLocation":"11779:7:3","nodeType":"VariableDeclaration","scope":1077,"src":"11774:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1061,"name":"bool","nodeType":"ElementaryTypeName","src":"11774:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1064,"mutability":"mutable","name":"value","nameLocation":"11796:5:3","nodeType":"VariableDeclaration","scope":1077,"src":"11788:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1063,"name":"uint256","nodeType":"ElementaryTypeName","src":"11788:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11773:29:3"},"scope":1631,"src":"11705:184:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1113,"nodeType":"Block","src":"12297:147:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1091,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"12311:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":1094,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"12323:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12317:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1092,"name":"bytes","nodeType":"ElementaryTypeName","src":"12317:5:3","typeDescriptions":{}}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12317:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12330:6:3","memberName":"length","nodeType":"MemberAccess","src":"12317:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12311:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"12340:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1099,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"12348:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12340:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12311:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1106,"nodeType":"IfStatement","src":"12307:63:3","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12361:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12368:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1104,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12360:10:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1090,"id":1105,"nodeType":"Return","src":"12353:17:3"}},{"expression":{"arguments":[{"id":1108,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"12419:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1109,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"12426:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1110,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"12433:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1107,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"12387:31:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12387:50:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1090,"id":1112,"nodeType":"Return","src":"12380:57:3"}]},"documentation":{"id":1078,"nodeType":"StructuredDocumentation","src":"11895:241:3","text":" @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":1114,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12150:15:3","nodeType":"FunctionDefinition","parameters":{"id":1085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1080,"mutability":"mutable","name":"input","nameLocation":"12189:5:3","nodeType":"VariableDeclaration","scope":1114,"src":"12175:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1079,"name":"string","nodeType":"ElementaryTypeName","src":"12175:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1082,"mutability":"mutable","name":"begin","nameLocation":"12212:5:3","nodeType":"VariableDeclaration","scope":1114,"src":"12204:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1081,"name":"uint256","nodeType":"ElementaryTypeName","src":"12204:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1084,"mutability":"mutable","name":"end","nameLocation":"12235:3:3","nodeType":"VariableDeclaration","scope":1114,"src":"12227:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1083,"name":"uint256","nodeType":"ElementaryTypeName","src":"12227:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12165:79:3"},"returnParameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"success","nameLocation":"12273:7:3","nodeType":"VariableDeclaration","scope":1114,"src":"12268:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1086,"name":"bool","nodeType":"ElementaryTypeName","src":"12268:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1089,"mutability":"mutable","name":"value","nameLocation":"12290:5:3","nodeType":"VariableDeclaration","scope":1114,"src":"12282:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1088,"name":"uint256","nodeType":"ElementaryTypeName","src":"12282:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12267:29:3"},"scope":1631,"src":"12141:303:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1216,"nodeType":"Block","src":"12853:881:3","statements":[{"assignments":[1129],"declarations":[{"constant":false,"id":1129,"mutability":"mutable","name":"buffer","nameLocation":"12876:6:3","nodeType":"VariableDeclaration","scope":1216,"src":"12863:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1128,"name":"bytes","nodeType":"ElementaryTypeName","src":"12863:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1134,"initialValue":{"arguments":[{"id":1132,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"12891:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12885:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1130,"name":"bytes","nodeType":"ElementaryTypeName","src":"12885:5:3","typeDescriptions":{}}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12885:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"12863:34:3"},{"assignments":[1136],"declarations":[{"constant":false,"id":1136,"mutability":"mutable","name":"hasPrefix","nameLocation":"12950:9:3","nodeType":"VariableDeclaration","scope":1216,"src":"12945:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1135,"name":"bool","nodeType":"ElementaryTypeName","src":"12945:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1156,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1137,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1121,"src":"12963:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1138,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"12969:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12977:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12969:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12963:15:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12962:17:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1146,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1129,"src":"13013:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1147,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"13021:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1145,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"12990:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12990:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12983:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":1143,"name":"bytes2","nodeType":"ElementaryTypeName","src":"12983:6:3","typeDescriptions":{}}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12983:45:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":1152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13039:4:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":1151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13032:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":1150,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13032:6:3","typeDescriptions":{}}},"id":1153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13032:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"12983:61:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12962:82:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12945:99:3"},{"assignments":[1158],"declarations":[{"constant":false,"id":1158,"mutability":"mutable","name":"offset","nameLocation":"13133:6:3","nodeType":"VariableDeclaration","scope":1216,"src":"13125:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1157,"name":"uint256","nodeType":"ElementaryTypeName","src":"13125:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1164,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1159,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1136,"src":"13142:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13152:6:3","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"13142:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13142:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":1162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13163:1:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13142:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13125:39:3"},{"assignments":[1166],"declarations":[{"constant":false,"id":1166,"mutability":"mutable","name":"result","nameLocation":"13183:6:3","nodeType":"VariableDeclaration","scope":1216,"src":"13175:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1165,"name":"uint256","nodeType":"ElementaryTypeName","src":"13175:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1168,"initialValue":{"hexValue":"30","id":1167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13192:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13175:18:3"},{"body":{"id":1210,"nodeType":"Block","src":"13250:447:3","statements":[{"assignments":[1182],"declarations":[{"constant":false,"id":1182,"mutability":"mutable","name":"chr","nameLocation":"13270:3:3","nodeType":"VariableDeclaration","scope":1210,"src":"13264:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1181,"name":"uint8","nodeType":"ElementaryTypeName","src":"13264:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1192,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":1187,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1129,"src":"13319:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1188,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"13327:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1186,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"13296:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13296:33:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13289:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1184,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13289:6:3","typeDescriptions":{}}},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13289:41:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1183,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1452,"src":"13276:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13276:55:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13264:67:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1193,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"13349:3:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3135","id":1194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13355:2:3","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"13349:8:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1200,"nodeType":"IfStatement","src":"13345:31:3","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13367:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13374:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13366:10:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1127,"id":1199,"nodeType":"Return","src":"13359:17:3"}},{"expression":{"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1201,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"13390:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3136","id":1202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13400:2:3","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13390:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1204,"nodeType":"ExpressionStatement","src":"13390:12:3"},{"id":1209,"nodeType":"UncheckedBlock","src":"13416:271:3","statements":[{"expression":{"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1205,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"13659:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1206,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"13669:3:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13659:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1208,"nodeType":"ExpressionStatement","src":"13659:13:3"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"13236:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1176,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1121,"src":"13240:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13236:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1211,"initializationExpression":{"assignments":[1170],"declarations":[{"constant":false,"id":1170,"mutability":"mutable","name":"i","nameLocation":"13216:1:3","nodeType":"VariableDeclaration","scope":1211,"src":"13208:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1169,"name":"uint256","nodeType":"ElementaryTypeName","src":"13208:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1174,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1171,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"13220:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1172,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"13228:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13220:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13208:26:3"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13245:3:3","subExpression":{"id":1178,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"13247:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1180,"nodeType":"ExpressionStatement","src":"13245:3:3"},"nodeType":"ForStatement","src":"13203:494:3"},{"expression":{"components":[{"hexValue":"74727565","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13714:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1213,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"13720:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13713:14:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1127,"id":1215,"nodeType":"Return","src":"13706:21:3"}]},"documentation":{"id":1115,"nodeType":"StructuredDocumentation","src":"12450:227:3","text":" @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":1217,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseHexUintUncheckedBounds","nameLocation":"12691:31:3","nodeType":"FunctionDefinition","parameters":{"id":1122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1117,"mutability":"mutable","name":"input","nameLocation":"12746:5:3","nodeType":"VariableDeclaration","scope":1217,"src":"12732:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1116,"name":"string","nodeType":"ElementaryTypeName","src":"12732:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"begin","nameLocation":"12769:5:3","nodeType":"VariableDeclaration","scope":1217,"src":"12761:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1118,"name":"uint256","nodeType":"ElementaryTypeName","src":"12761:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1121,"mutability":"mutable","name":"end","nameLocation":"12792:3:3","nodeType":"VariableDeclaration","scope":1217,"src":"12784:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1120,"name":"uint256","nodeType":"ElementaryTypeName","src":"12784:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12722:79:3"},"returnParameters":{"id":1127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1124,"mutability":"mutable","name":"success","nameLocation":"12829:7:3","nodeType":"VariableDeclaration","scope":1217,"src":"12824:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1123,"name":"bool","nodeType":"ElementaryTypeName","src":"12824:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1126,"mutability":"mutable","name":"value","nameLocation":"12846:5:3","nodeType":"VariableDeclaration","scope":1217,"src":"12838:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1125,"name":"uint256","nodeType":"ElementaryTypeName","src":"12838:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12823:29:3"},"scope":1631,"src":"12682:1052:3","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1235,"nodeType":"Block","src":"14032:67:3","statements":[{"expression":{"arguments":[{"id":1226,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1220,"src":"14062:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14069:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1230,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1220,"src":"14078:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14072:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1228,"name":"bytes","nodeType":"ElementaryTypeName","src":"14072:5:3","typeDescriptions":{}}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14072:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14085:6:3","memberName":"length","nodeType":"MemberAccess","src":"14072:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1225,"name":"parseAddress","nodeType":"Identifier","overloadedDeclarations":[1236,1267],"referencedDeclaration":1267,"src":"14049:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (address)"}},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14049:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1224,"id":1234,"nodeType":"Return","src":"14042:50:3"}]},"documentation":{"id":1218,"nodeType":"StructuredDocumentation","src":"13740:212:3","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":1236,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"13966:12:3","nodeType":"FunctionDefinition","parameters":{"id":1221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"input","nameLocation":"13993:5:3","nodeType":"VariableDeclaration","scope":1236,"src":"13979:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1219,"name":"string","nodeType":"ElementaryTypeName","src":"13979:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13978:21:3"},"returnParameters":{"id":1224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1223,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1236,"src":"14023:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1222,"name":"address","nodeType":"ElementaryTypeName","src":"14023:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14022:9:3"},"scope":1631,"src":"13957:142:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1266,"nodeType":"Block","src":"14472:165:3","statements":[{"assignments":[1249,1251],"declarations":[{"constant":false,"id":1249,"mutability":"mutable","name":"success","nameLocation":"14488:7:3","nodeType":"VariableDeclaration","scope":1266,"src":"14483:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1248,"name":"bool","nodeType":"ElementaryTypeName","src":"14483:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1251,"mutability":"mutable","name":"value","nameLocation":"14505:5:3","nodeType":"VariableDeclaration","scope":1266,"src":"14497:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1250,"name":"address","nodeType":"ElementaryTypeName","src":"14497:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1257,"initialValue":{"arguments":[{"id":1253,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"14530:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1254,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"14537:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1255,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"14544:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1252,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[1288,1392],"referencedDeclaration":1392,"src":"14514:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":1256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14514:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"nodeType":"VariableDeclarationStatement","src":"14482:66:3"},{"condition":{"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14562:8:3","subExpression":{"id":1258,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"14563:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1263,"nodeType":"IfStatement","src":"14558:50:3","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1260,"name":"StringsInvalidAddressFormat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"14579:27:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14579:29:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1262,"nodeType":"RevertStatement","src":"14572:36:3"}},{"expression":{"id":1264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"14625:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1247,"id":1265,"nodeType":"Return","src":"14618:12:3"}]},"documentation":{"id":1237,"nodeType":"StructuredDocumentation","src":"14105:259:3","text":" @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":1267,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14378:12:3","nodeType":"FunctionDefinition","parameters":{"id":1244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"input","nameLocation":"14405:5:3","nodeType":"VariableDeclaration","scope":1267,"src":"14391:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1238,"name":"string","nodeType":"ElementaryTypeName","src":"14391:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"begin","nameLocation":"14420:5:3","nodeType":"VariableDeclaration","scope":1267,"src":"14412:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1240,"name":"uint256","nodeType":"ElementaryTypeName","src":"14412:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1243,"mutability":"mutable","name":"end","nameLocation":"14435:3:3","nodeType":"VariableDeclaration","scope":1267,"src":"14427:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1242,"name":"uint256","nodeType":"ElementaryTypeName","src":"14427:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14390:49:3"},"returnParameters":{"id":1247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1267,"src":"14463:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1245,"name":"address","nodeType":"ElementaryTypeName","src":"14463:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14462:9:3"},"scope":1631,"src":"14369:268:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1287,"nodeType":"Block","src":"14944:70:3","statements":[{"expression":{"arguments":[{"id":1278,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1270,"src":"14977:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14984:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1282,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1270,"src":"14993:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14987:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1280,"name":"bytes","nodeType":"ElementaryTypeName","src":"14987:5:3","typeDescriptions":{}}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14987:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15000:6:3","memberName":"length","nodeType":"MemberAccess","src":"14987:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1277,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[1288,1392],"referencedDeclaration":1392,"src":"14961:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14961:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":1276,"id":1286,"nodeType":"Return","src":"14954:53:3"}]},"documentation":{"id":1268,"nodeType":"StructuredDocumentation","src":"14643:198:3","text":" @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n formatted address. See {parseAddress-string} requirements."},"id":1288,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"14855:15:3","nodeType":"FunctionDefinition","parameters":{"id":1271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1270,"mutability":"mutable","name":"input","nameLocation":"14885:5:3","nodeType":"VariableDeclaration","scope":1288,"src":"14871:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1269,"name":"string","nodeType":"ElementaryTypeName","src":"14871:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14870:21:3"},"returnParameters":{"id":1276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1273,"mutability":"mutable","name":"success","nameLocation":"14920:7:3","nodeType":"VariableDeclaration","scope":1288,"src":"14915:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1272,"name":"bool","nodeType":"ElementaryTypeName","src":"14915:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1275,"mutability":"mutable","name":"value","nameLocation":"14937:5:3","nodeType":"VariableDeclaration","scope":1288,"src":"14929:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1274,"name":"address","nodeType":"ElementaryTypeName","src":"14929:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14914:29:3"},"scope":1631,"src":"14846:168:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1391,"nodeType":"Block","src":"15407:733:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1302,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"15421:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":1305,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"15433:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15427:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1303,"name":"bytes","nodeType":"ElementaryTypeName","src":"15427:5:3","typeDescriptions":{}}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15427:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15440:6:3","memberName":"length","nodeType":"MemberAccess","src":"15427:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15421:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1309,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"15450:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1310,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"15458:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15450:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15421:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1320,"nodeType":"IfStatement","src":"15417:72:3","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15471:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":1316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15486:1:3","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":1315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15478:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1314,"name":"address","nodeType":"ElementaryTypeName","src":"15478:7:3","typeDescriptions":{}}},"id":1317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15478:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15470:19:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":1301,"id":1319,"nodeType":"Return","src":"15463:26:3"}},{"assignments":[1322],"declarations":[{"constant":false,"id":1322,"mutability":"mutable","name":"hasPrefix","nameLocation":"15505:9:3","nodeType":"VariableDeclaration","scope":1391,"src":"15500:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1321,"name":"bool","nodeType":"ElementaryTypeName","src":"15500:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1345,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1323,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"15518:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1324,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"15524:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15532:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15524:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15518:15:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1328,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15517:17:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":1334,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"15574:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15568:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1332,"name":"bytes","nodeType":"ElementaryTypeName","src":"15568:5:3","typeDescriptions":{}}},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15568:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1336,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"15582:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1331,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"15545:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15545:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15538:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":1329,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15538:6:3","typeDescriptions":{}}},"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15538:51:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":1341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15600:4:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":1340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15593:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":1339,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15593:6:3","typeDescriptions":{}}},"id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15593:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"15538:67:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15517:88:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"15500:105:3"},{"assignments":[1347],"declarations":[{"constant":false,"id":1347,"mutability":"mutable","name":"expectedLength","nameLocation":"15694:14:3","nodeType":"VariableDeclaration","scope":1391,"src":"15686:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1346,"name":"uint256","nodeType":"ElementaryTypeName","src":"15686:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1355,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3430","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15711:2:3","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1349,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"15716:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15726:6:3","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"15716:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15716:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":1352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15737:1:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15716:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15711:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15686:52:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1356,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"15803:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1357,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"15809:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15803:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1359,"name":"expectedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"15818:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15803:29:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1389,"nodeType":"Block","src":"16083:51:3","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":1382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16105:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":1385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16120:1:3","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":1384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16112:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1383,"name":"address","nodeType":"ElementaryTypeName","src":"16112:7:3","typeDescriptions":{}}},"id":1386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16112:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1387,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16104:19:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":1301,"id":1388,"nodeType":"Return","src":"16097:26:3"}]},"id":1390,"nodeType":"IfStatement","src":"15799:335:3","trueBody":{"id":1381,"nodeType":"Block","src":"15834:243:3","statements":[{"assignments":[1362,1364],"declarations":[{"constant":false,"id":1362,"mutability":"mutable","name":"s","nameLocation":"15955:1:3","nodeType":"VariableDeclaration","scope":1381,"src":"15950:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1361,"name":"bool","nodeType":"ElementaryTypeName","src":"15950:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1364,"mutability":"mutable","name":"v","nameLocation":"15966:1:3","nodeType":"VariableDeclaration","scope":1381,"src":"15958:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1363,"name":"uint256","nodeType":"ElementaryTypeName","src":"15958:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1370,"initialValue":{"arguments":[{"id":1366,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"16003:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1367,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"16010:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1368,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"16017:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1365,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"15971:31:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15971:50:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15949:72:3"},{"expression":{"components":[{"id":1371,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"16043:1:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"id":1376,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"16062:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16054:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1374,"name":"uint160","nodeType":"ElementaryTypeName","src":"16054:7:3","typeDescriptions":{}}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16046:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1372,"name":"address","nodeType":"ElementaryTypeName","src":"16046:7:3","typeDescriptions":{}}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16046:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1379,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16042:24:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":1301,"id":1380,"nodeType":"Return","src":"16035:31:3"}]}}]},"documentation":{"id":1289,"nodeType":"StructuredDocumentation","src":"15020:226:3","text":" @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n formatted address. See {parseAddress-string-uint256-uint256} requirements."},"id":1392,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15260:15:3","nodeType":"FunctionDefinition","parameters":{"id":1296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1291,"mutability":"mutable","name":"input","nameLocation":"15299:5:3","nodeType":"VariableDeclaration","scope":1392,"src":"15285:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1290,"name":"string","nodeType":"ElementaryTypeName","src":"15285:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1293,"mutability":"mutable","name":"begin","nameLocation":"15322:5:3","nodeType":"VariableDeclaration","scope":1392,"src":"15314:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1292,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1295,"mutability":"mutable","name":"end","nameLocation":"15345:3:3","nodeType":"VariableDeclaration","scope":1392,"src":"15337:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1294,"name":"uint256","nodeType":"ElementaryTypeName","src":"15337:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15275:79:3"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1298,"mutability":"mutable","name":"success","nameLocation":"15383:7:3","nodeType":"VariableDeclaration","scope":1392,"src":"15378:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1297,"name":"bool","nodeType":"ElementaryTypeName","src":"15378:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1300,"mutability":"mutable","name":"value","nameLocation":"15400:5:3","nodeType":"VariableDeclaration","scope":1392,"src":"15392:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1299,"name":"address","nodeType":"ElementaryTypeName","src":"15392:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15377:29:3"},"scope":1631,"src":"15251:889:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1451,"nodeType":"Block","src":"16209:461:3","statements":[{"assignments":[1400],"declarations":[{"constant":false,"id":1400,"mutability":"mutable","name":"value","nameLocation":"16225:5:3","nodeType":"VariableDeclaration","scope":1451,"src":"16219:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1399,"name":"uint8","nodeType":"ElementaryTypeName","src":"16219:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1405,"initialValue":{"arguments":[{"id":1403,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"16239:3:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16233:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1401,"name":"uint8","nodeType":"ElementaryTypeName","src":"16233:5:3","typeDescriptions":{}}},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16233:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16219:24:3"},{"id":1448,"nodeType":"UncheckedBlock","src":"16403:238:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1406,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16431:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3437","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16439:2:3","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"src":"16431:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16445:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3538","id":1410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16453:2:3","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"src":"16445:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16431:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16491:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16499:2:3","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"16491:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16505:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313033","id":1421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16513:3:3","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"src":"16505:11:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16491:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16552:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":1429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16560:2:3","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"16552:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1431,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16566:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3731","id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16574:2:3","typeDescriptions":{"typeIdentifier":"t_rational_71_by_1","typeString":"int_const 71"},"value":"71"},"src":"16566:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16552:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"expression":{"arguments":[{"id":1441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16620:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1440,"name":"uint8","nodeType":"ElementaryTypeName","src":"16620:5:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":1439,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16615:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16615:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16627:3:3","memberName":"max","nodeType":"MemberAccess","src":"16615:15:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1398,"id":1444,"nodeType":"Return","src":"16608:22:3"},"id":1445,"nodeType":"IfStatement","src":"16548:82:3","trueBody":{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16578:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3535","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16587:2:3","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"55"},"src":"16578:11:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1438,"nodeType":"ExpressionStatement","src":"16578:11:3"}},"id":1446,"nodeType":"IfStatement","src":"16487:143:3","trueBody":{"expression":{"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16518:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3837","id":1425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16527:2:3","typeDescriptions":{"typeIdentifier":"t_rational_87_by_1","typeString":"int_const 87"},"value":"87"},"src":"16518:11:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1427,"nodeType":"ExpressionStatement","src":"16518:11:3"}},"id":1447,"nodeType":"IfStatement","src":"16427:203:3","trueBody":{"expression":{"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16457:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3438","id":1414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16466:2:3","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"src":"16457:11:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1416,"nodeType":"ExpressionStatement","src":"16457:11:3"}}]},{"expression":{"id":1449,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"16658:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1398,"id":1450,"nodeType":"Return","src":"16651:12:3"}]},"id":1452,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseChr","nameLocation":"16155:12:3","nodeType":"FunctionDefinition","parameters":{"id":1395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1394,"mutability":"mutable","name":"chr","nameLocation":"16175:3:3","nodeType":"VariableDeclaration","scope":1452,"src":"16168:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1393,"name":"bytes1","nodeType":"ElementaryTypeName","src":"16168:6:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"16167:12:3"},"returnParameters":{"id":1398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1452,"src":"16202:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1396,"name":"uint8","nodeType":"ElementaryTypeName","src":"16202:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16201:7:3"},"scope":1631,"src":"16146:524:3","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1617,"nodeType":"Block","src":"17336:1331:3","statements":[{"assignments":[1461],"declarations":[{"constant":false,"id":1461,"mutability":"mutable","name":"buffer","nameLocation":"17359:6:3","nodeType":"VariableDeclaration","scope":1617,"src":"17346:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1460,"name":"bytes","nodeType":"ElementaryTypeName","src":"17346:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1466,"initialValue":{"arguments":[{"id":1464,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"17374:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17368:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1462,"name":"bytes","nodeType":"ElementaryTypeName","src":"17368:5:3","typeDescriptions":{}}},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17368:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17346:34:3"},{"assignments":[1468],"declarations":[{"constant":false,"id":1468,"mutability":"mutable","name":"output","nameLocation":"17403:6:3","nodeType":"VariableDeclaration","scope":1617,"src":"17390:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1467,"name":"bytes","nodeType":"ElementaryTypeName","src":"17390:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1476,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17422:1:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":1472,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"17426:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17433:6:3","memberName":"length","nodeType":"MemberAccess","src":"17426:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17422:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17412:9:3","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1469,"name":"bytes","nodeType":"ElementaryTypeName","src":"17416:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17412:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17390:50:3"},{"assignments":[1478],"declarations":[{"constant":false,"id":1478,"mutability":"mutable","name":"outputLength","nameLocation":"17481:12:3","nodeType":"VariableDeclaration","scope":1617,"src":"17473:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1477,"name":"uint256","nodeType":"ElementaryTypeName","src":"17473:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1480,"initialValue":{"hexValue":"30","id":1479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17496:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17473:24:3"},{"body":{"id":1609,"nodeType":"Block","src":"17548:854:3","statements":[{"assignments":[1492],"declarations":[{"constant":false,"id":1492,"mutability":"mutable","name":"char","nameLocation":"17569:4:3","nodeType":"VariableDeclaration","scope":1609,"src":"17562:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1491,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17562:6:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":1500,"initialValue":{"arguments":[{"arguments":[{"id":1496,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"17606:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1497,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"17614:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1495,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"17583:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17583:33:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17576:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1493,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17576:6:3","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17576:41:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"17562:55:3"},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1501,"name":"SPECIAL_CHARS_LOOKUP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":282,"src":"17637:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17661:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"arguments":[{"id":1505,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"17672:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17666:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1503,"name":"uint8","nodeType":"ElementaryTypeName","src":"17666:5:3","typeDescriptions":{}}},"id":1506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17666:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17661:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1508,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17660:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17637:41:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1510,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17636:43:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17683:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17636:48:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1513,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17635:50:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1607,"nodeType":"Block","src":"18330:62:3","statements":[{"expression":{"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1600,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"18348:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1603,"indexExpression":{"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18355:14:3","subExpression":{"id":1601,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"18355:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18348:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1604,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"18373:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"18348:29:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1606,"nodeType":"ExpressionStatement","src":"18348:29:3"}]},"id":1608,"nodeType":"IfStatement","src":"17631:761:3","trueBody":{"id":1599,"nodeType":"Block","src":"17687:637:3","statements":[{"expression":{"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1514,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"17705:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1517,"indexExpression":{"id":1516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17712:14:3","subExpression":{"id":1515,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"17712:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17705:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":1518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17730:4:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"17705:29:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1520,"nodeType":"ExpressionStatement","src":"17705:29:3"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1521,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"17756:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":1522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17764:4:3","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"17756:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1531,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"17825:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039","id":1532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17833:4:3","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"17825:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1541,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"17894:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783061","id":1542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17902:4:3","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"17894:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1551,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"17963:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783063","id":1552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17971:4:3","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"17963:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1561,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"18032:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783064","id":1562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18040:4:3","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"18032:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1571,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"18101:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783563","id":1572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18109:4:3","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"18101:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1581,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"18171:4:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783232","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18179:4:3","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"18171:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1592,"nodeType":"IfStatement","src":"18167:143:3","trueBody":{"id":1591,"nodeType":"Block","src":"18185:125:3","statements":[{"expression":{"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1584,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"18263:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1587,"indexExpression":{"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18270:14:3","subExpression":{"id":1585,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"18270:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18263:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"22","id":1588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18288:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""},"src":"18263:28:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1590,"nodeType":"ExpressionStatement","src":"18263:28:3"}]}},"id":1593,"nodeType":"IfStatement","src":"18097:213:3","trueBody":{"expression":{"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1574,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"18115:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1577,"indexExpression":{"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18122:14:3","subExpression":{"id":1575,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"18122:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18115:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":1578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18140:4:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"18115:29:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1580,"nodeType":"ExpressionStatement","src":"18115:29:3"}},"id":1594,"nodeType":"IfStatement","src":"18028:282:3","trueBody":{"expression":{"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1564,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"18046:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1567,"indexExpression":{"id":1566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18053:14:3","subExpression":{"id":1565,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"18053:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18046:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"72","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18071:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""},"value":"r"},"src":"18046:28:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1570,"nodeType":"ExpressionStatement","src":"18046:28:3"}},"id":1595,"nodeType":"IfStatement","src":"17959:351:3","trueBody":{"expression":{"id":1559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1554,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"17977:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1557,"indexExpression":{"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17984:14:3","subExpression":{"id":1555,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"17984:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17977:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66","id":1558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18002:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""},"value":"f"},"src":"17977:28:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1560,"nodeType":"ExpressionStatement","src":"17977:28:3"}},"id":1596,"nodeType":"IfStatement","src":"17890:420:3","trueBody":{"expression":{"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1544,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"17908:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1547,"indexExpression":{"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17915:14:3","subExpression":{"id":1545,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"17915:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17908:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"6e","id":1548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17933:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""},"value":"n"},"src":"17908:28:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1550,"nodeType":"ExpressionStatement","src":"17908:28:3"}},"id":1597,"nodeType":"IfStatement","src":"17821:489:3","trueBody":{"expression":{"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1534,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"17839:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1537,"indexExpression":{"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17846:14:3","subExpression":{"id":1535,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"17846:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17839:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74","id":1538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17864:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""},"value":"t"},"src":"17839:28:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1540,"nodeType":"ExpressionStatement","src":"17839:28:3"}},"id":1598,"nodeType":"IfStatement","src":"17752:558:3","trueBody":{"expression":{"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1524,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"17770:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1527,"indexExpression":{"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17777:14:3","subExpression":{"id":1525,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"17777:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17770:22:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"62","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17795:3:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""},"value":"b"},"src":"17770:28:3","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1530,"nodeType":"ExpressionStatement","src":"17770:28:3"}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1484,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"17524:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1485,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"17528:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17535:6:3","memberName":"length","nodeType":"MemberAccess","src":"17528:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17524:17:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1610,"initializationExpression":{"assignments":[1482],"declarations":[{"constant":false,"id":1482,"mutability":"mutable","name":"i","nameLocation":"17521:1:3","nodeType":"VariableDeclaration","scope":1610,"src":"17513:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1481,"name":"uint256","nodeType":"ElementaryTypeName","src":"17513:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1483,"nodeType":"VariableDeclarationStatement","src":"17513:9:3"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17543:3:3","subExpression":{"id":1488,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"17545:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1490,"nodeType":"ExpressionStatement","src":"17543:3:3"},"nodeType":"ForStatement","src":"17508:894:3"},{"AST":{"nativeSrc":"18500:129:3","nodeType":"YulBlock","src":"18500:129:3","statements":[{"expression":{"arguments":[{"name":"output","nativeSrc":"18521:6:3","nodeType":"YulIdentifier","src":"18521:6:3"},{"name":"outputLength","nativeSrc":"18529:12:3","nodeType":"YulIdentifier","src":"18529:12:3"}],"functionName":{"name":"mstore","nativeSrc":"18514:6:3","nodeType":"YulIdentifier","src":"18514:6:3"},"nativeSrc":"18514:28:3","nodeType":"YulFunctionCall","src":"18514:28:3"},"nativeSrc":"18514:28:3","nodeType":"YulExpressionStatement","src":"18514:28:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18562:4:3","nodeType":"YulLiteral","src":"18562:4:3","type":"","value":"0x40"},{"arguments":[{"name":"output","nativeSrc":"18572:6:3","nodeType":"YulIdentifier","src":"18572:6:3"},{"arguments":[{"kind":"number","nativeSrc":"18584:1:3","nodeType":"YulLiteral","src":"18584:1:3","type":"","value":"5"},{"arguments":[{"kind":"number","nativeSrc":"18591:1:3","nodeType":"YulLiteral","src":"18591:1:3","type":"","value":"5"},{"arguments":[{"name":"outputLength","nativeSrc":"18598:12:3","nodeType":"YulIdentifier","src":"18598:12:3"},{"kind":"number","nativeSrc":"18612:2:3","nodeType":"YulLiteral","src":"18612:2:3","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"18594:3:3","nodeType":"YulIdentifier","src":"18594:3:3"},"nativeSrc":"18594:21:3","nodeType":"YulFunctionCall","src":"18594:21:3"}],"functionName":{"name":"shr","nativeSrc":"18587:3:3","nodeType":"YulIdentifier","src":"18587:3:3"},"nativeSrc":"18587:29:3","nodeType":"YulFunctionCall","src":"18587:29:3"}],"functionName":{"name":"shl","nativeSrc":"18580:3:3","nodeType":"YulIdentifier","src":"18580:3:3"},"nativeSrc":"18580:37:3","nodeType":"YulFunctionCall","src":"18580:37:3"}],"functionName":{"name":"add","nativeSrc":"18568:3:3","nodeType":"YulIdentifier","src":"18568:3:3"},"nativeSrc":"18568:50:3","nodeType":"YulFunctionCall","src":"18568:50:3"}],"functionName":{"name":"mstore","nativeSrc":"18555:6:3","nodeType":"YulIdentifier","src":"18555:6:3"},"nativeSrc":"18555:64:3","nodeType":"YulFunctionCall","src":"18555:64:3"},"nativeSrc":"18555:64:3","nodeType":"YulExpressionStatement","src":"18555:64:3"}]},"evmVersion":"cancun","externalReferences":[{"declaration":1468,"isOffset":false,"isSlot":false,"src":"18521:6:3","valueSize":1},{"declaration":1468,"isOffset":false,"isSlot":false,"src":"18572:6:3","valueSize":1},{"declaration":1478,"isOffset":false,"isSlot":false,"src":"18529:12:3","valueSize":1},{"declaration":1478,"isOffset":false,"isSlot":false,"src":"18598:12:3","valueSize":1}],"flags":["memory-safe"],"id":1611,"nodeType":"InlineAssembly","src":"18475:154:3"},{"expression":{"arguments":[{"id":1614,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"18653:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18646:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1612,"name":"string","nodeType":"ElementaryTypeName","src":"18646:6:3","typeDescriptions":{}}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18646:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1459,"id":1616,"nodeType":"Return","src":"18639:21:3"}]},"documentation":{"id":1453,"nodeType":"StructuredDocumentation","src":"16676:576:3","text":" @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n characters that are not in this range, but other tooling may provide different results."},"id":1618,"implemented":true,"kind":"function","modifiers":[],"name":"escapeJSON","nameLocation":"17266:10:3","nodeType":"FunctionDefinition","parameters":{"id":1456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1455,"mutability":"mutable","name":"input","nameLocation":"17291:5:3","nodeType":"VariableDeclaration","scope":1618,"src":"17277:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1454,"name":"string","nodeType":"ElementaryTypeName","src":"17277:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17276:21:3"},"returnParameters":{"id":1459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1618,"src":"17321:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1457,"name":"string","nodeType":"ElementaryTypeName","src":"17321:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17320:15:3"},"scope":1631,"src":"17257:1410:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1629,"nodeType":"Block","src":"19052:225:3","statements":[{"AST":{"nativeSrc":"19201:70:3","nodeType":"YulBlock","src":"19201:70:3","statements":[{"nativeSrc":"19215:46:3","nodeType":"YulAssignment","src":"19215:46:3","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"19238:6:3","nodeType":"YulIdentifier","src":"19238:6:3"},{"kind":"number","nativeSrc":"19246:4:3","nodeType":"YulLiteral","src":"19246:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19234:3:3","nodeType":"YulIdentifier","src":"19234:3:3"},"nativeSrc":"19234:17:3","nodeType":"YulFunctionCall","src":"19234:17:3"},{"name":"offset","nativeSrc":"19253:6:3","nodeType":"YulIdentifier","src":"19253:6:3"}],"functionName":{"name":"add","nativeSrc":"19230:3:3","nodeType":"YulIdentifier","src":"19230:3:3"},"nativeSrc":"19230:30:3","nodeType":"YulFunctionCall","src":"19230:30:3"}],"functionName":{"name":"mload","nativeSrc":"19224:5:3","nodeType":"YulIdentifier","src":"19224:5:3"},"nativeSrc":"19224:37:3","nodeType":"YulFunctionCall","src":"19224:37:3"},"variableNames":[{"name":"value","nativeSrc":"19215:5:3","nodeType":"YulIdentifier","src":"19215:5:3"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1621,"isOffset":false,"isSlot":false,"src":"19238:6:3","valueSize":1},{"declaration":1623,"isOffset":false,"isSlot":false,"src":"19253:6:3","valueSize":1},{"declaration":1626,"isOffset":false,"isSlot":false,"src":"19215:5:3","valueSize":1}],"flags":["memory-safe"],"id":1628,"nodeType":"InlineAssembly","src":"19176:95:3"}]},"documentation":{"id":1619,"nodeType":"StructuredDocumentation","src":"18673:268:3","text":" @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":1630,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"18955:22:3","nodeType":"FunctionDefinition","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1621,"mutability":"mutable","name":"buffer","nameLocation":"18991:6:3","nodeType":"VariableDeclaration","scope":1630,"src":"18978:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1620,"name":"bytes","nodeType":"ElementaryTypeName","src":"18978:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1623,"mutability":"mutable","name":"offset","nameLocation":"19007:6:3","nodeType":"VariableDeclaration","scope":1630,"src":"18999:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1622,"name":"uint256","nodeType":"ElementaryTypeName","src":"18999:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18977:37:3"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"value","nameLocation":"19045:5:3","nodeType":"VariableDeclaration","scope":1630,"src":"19037:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19037:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19036:15:3"},"scope":1631,"src":"18946:331:3","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1632,"src":"297:18982:3","usedErrors":[289,292,295],"usedEvents":[]}],"src":"101:19179:3"},"id":3},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[3252],"Panic":[229],"SafeCast":[5017]},"id":3253,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1633,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:4"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":1635,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3253,"sourceUnit":230,"src":"129:35:4","symbolAliases":[{"foreign":{"id":1634,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"137:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":1637,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3253,"sourceUnit":5018,"src":"165:40:4","symbolAliases":[{"foreign":{"id":1636,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"173:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":1638,"nodeType":"StructuredDocumentation","src":"207:73:4","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3252,"linearizedBaseContracts":[3252],"name":"Math","nameLocation":"289:4:4","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":1643,"members":[{"id":1639,"name":"Floor","nameLocation":"324:5:4","nodeType":"EnumValue","src":"324:5:4"},{"id":1640,"name":"Ceil","nameLocation":"367:4:4","nodeType":"EnumValue","src":"367:4:4"},{"id":1641,"name":"Trunc","nameLocation":"409:5:4","nodeType":"EnumValue","src":"409:5:4"},{"id":1642,"name":"Expand","nameLocation":"439:6:4","nodeType":"EnumValue","src":"439:6:4"}],"name":"Rounding","nameLocation":"305:8:4","nodeType":"EnumDefinition","src":"300:169:4"},{"body":{"id":1656,"nodeType":"Block","src":"731:112:4","statements":[{"AST":{"nativeSrc":"766:71:4","nodeType":"YulBlock","src":"766:71:4","statements":[{"nativeSrc":"780:16:4","nodeType":"YulAssignment","src":"780:16:4","value":{"arguments":[{"name":"a","nativeSrc":"791:1:4","nodeType":"YulIdentifier","src":"791:1:4"},{"name":"b","nativeSrc":"794:1:4","nodeType":"YulIdentifier","src":"794:1:4"}],"functionName":{"name":"add","nativeSrc":"787:3:4","nodeType":"YulIdentifier","src":"787:3:4"},"nativeSrc":"787:9:4","nodeType":"YulFunctionCall","src":"787:9:4"},"variableNames":[{"name":"low","nativeSrc":"780:3:4","nodeType":"YulIdentifier","src":"780:3:4"}]},{"nativeSrc":"809:18:4","nodeType":"YulAssignment","src":"809:18:4","value":{"arguments":[{"name":"low","nativeSrc":"820:3:4","nodeType":"YulIdentifier","src":"820:3:4"},{"name":"a","nativeSrc":"825:1:4","nodeType":"YulIdentifier","src":"825:1:4"}],"functionName":{"name":"lt","nativeSrc":"817:2:4","nodeType":"YulIdentifier","src":"817:2:4"},"nativeSrc":"817:10:4","nodeType":"YulFunctionCall","src":"817:10:4"},"variableNames":[{"name":"high","nativeSrc":"809:4:4","nodeType":"YulIdentifier","src":"809:4:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1646,"isOffset":false,"isSlot":false,"src":"791:1:4","valueSize":1},{"declaration":1646,"isOffset":false,"isSlot":false,"src":"825:1:4","valueSize":1},{"declaration":1648,"isOffset":false,"isSlot":false,"src":"794:1:4","valueSize":1},{"declaration":1651,"isOffset":false,"isSlot":false,"src":"809:4:4","valueSize":1},{"declaration":1653,"isOffset":false,"isSlot":false,"src":"780:3:4","valueSize":1},{"declaration":1653,"isOffset":false,"isSlot":false,"src":"820:3:4","valueSize":1}],"flags":["memory-safe"],"id":1655,"nodeType":"InlineAssembly","src":"741:96:4"}]},"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"475:163:4","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"id":1657,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:4","nodeType":"FunctionDefinition","parameters":{"id":1649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"mutability":"mutable","name":"a","nameLocation":"667:1:4","nodeType":"VariableDeclaration","scope":1657,"src":"659:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1645,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1648,"mutability":"mutable","name":"b","nameLocation":"678:1:4","nodeType":"VariableDeclaration","scope":1657,"src":"670:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1647,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:4"},"returnParameters":{"id":1654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1651,"mutability":"mutable","name":"high","nameLocation":"712:4:4","nodeType":"VariableDeclaration","scope":1657,"src":"704:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1650,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1653,"mutability":"mutable","name":"low","nameLocation":"726:3:4","nodeType":"VariableDeclaration","scope":1657,"src":"718:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1652,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:4"},"scope":3252,"src":"643:200:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1670,"nodeType":"Block","src":"1115:462:4","statements":[{"AST":{"nativeSrc":"1437:134:4","nodeType":"YulBlock","src":"1437:134:4","statements":[{"nativeSrc":"1451:30:4","nodeType":"YulVariableDeclaration","src":"1451:30:4","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:4","nodeType":"YulIdentifier","src":"1468:1:4"},{"name":"b","nativeSrc":"1471:1:4","nodeType":"YulIdentifier","src":"1471:1:4"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:4","nodeType":"YulLiteral","src":"1478:1:4","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:4","nodeType":"YulIdentifier","src":"1474:3:4"},"nativeSrc":"1474:6:4","nodeType":"YulFunctionCall","src":"1474:6:4"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:4","nodeType":"YulIdentifier","src":"1461:6:4"},"nativeSrc":"1461:20:4","nodeType":"YulFunctionCall","src":"1461:20:4"},"variables":[{"name":"mm","nativeSrc":"1455:2:4","nodeType":"YulTypedName","src":"1455:2:4","type":""}]},{"nativeSrc":"1494:16:4","nodeType":"YulAssignment","src":"1494:16:4","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:4","nodeType":"YulIdentifier","src":"1505:1:4"},{"name":"b","nativeSrc":"1508:1:4","nodeType":"YulIdentifier","src":"1508:1:4"}],"functionName":{"name":"mul","nativeSrc":"1501:3:4","nodeType":"YulIdentifier","src":"1501:3:4"},"nativeSrc":"1501:9:4","nodeType":"YulFunctionCall","src":"1501:9:4"},"variableNames":[{"name":"low","nativeSrc":"1494:3:4","nodeType":"YulIdentifier","src":"1494:3:4"}]},{"nativeSrc":"1523:38:4","nodeType":"YulAssignment","src":"1523:38:4","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:4","nodeType":"YulIdentifier","src":"1539:2:4"},{"name":"low","nativeSrc":"1543:3:4","nodeType":"YulIdentifier","src":"1543:3:4"}],"functionName":{"name":"sub","nativeSrc":"1535:3:4","nodeType":"YulIdentifier","src":"1535:3:4"},"nativeSrc":"1535:12:4","nodeType":"YulFunctionCall","src":"1535:12:4"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:4","nodeType":"YulIdentifier","src":"1552:2:4"},{"name":"low","nativeSrc":"1556:3:4","nodeType":"YulIdentifier","src":"1556:3:4"}],"functionName":{"name":"lt","nativeSrc":"1549:2:4","nodeType":"YulIdentifier","src":"1549:2:4"},"nativeSrc":"1549:11:4","nodeType":"YulFunctionCall","src":"1549:11:4"}],"functionName":{"name":"sub","nativeSrc":"1531:3:4","nodeType":"YulIdentifier","src":"1531:3:4"},"nativeSrc":"1531:30:4","nodeType":"YulFunctionCall","src":"1531:30:4"},"variableNames":[{"name":"high","nativeSrc":"1523:4:4","nodeType":"YulIdentifier","src":"1523:4:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1660,"isOffset":false,"isSlot":false,"src":"1468:1:4","valueSize":1},{"declaration":1660,"isOffset":false,"isSlot":false,"src":"1505:1:4","valueSize":1},{"declaration":1662,"isOffset":false,"isSlot":false,"src":"1471:1:4","valueSize":1},{"declaration":1662,"isOffset":false,"isSlot":false,"src":"1508:1:4","valueSize":1},{"declaration":1665,"isOffset":false,"isSlot":false,"src":"1523:4:4","valueSize":1},{"declaration":1667,"isOffset":false,"isSlot":false,"src":"1494:3:4","valueSize":1},{"declaration":1667,"isOffset":false,"isSlot":false,"src":"1543:3:4","valueSize":1},{"declaration":1667,"isOffset":false,"isSlot":false,"src":"1556:3:4","valueSize":1}],"flags":["memory-safe"],"id":1669,"nodeType":"InlineAssembly","src":"1412:159:4"}]},"documentation":{"id":1658,"nodeType":"StructuredDocumentation","src":"849:173:4","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"id":1671,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:4","nodeType":"FunctionDefinition","parameters":{"id":1663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1660,"mutability":"mutable","name":"a","nameLocation":"1051:1:4","nodeType":"VariableDeclaration","scope":1671,"src":"1043:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1662,"mutability":"mutable","name":"b","nameLocation":"1062:1:4","nodeType":"VariableDeclaration","scope":1671,"src":"1054:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1661,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:4"},"returnParameters":{"id":1668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1665,"mutability":"mutable","name":"high","nameLocation":"1096:4:4","nodeType":"VariableDeclaration","scope":1671,"src":"1088:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1664,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1667,"mutability":"mutable","name":"low","nameLocation":"1110:3:4","nodeType":"VariableDeclaration","scope":1671,"src":"1102:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1666,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:4"},"scope":3252,"src":"1027:550:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1705,"nodeType":"Block","src":"1784:149:4","statements":[{"id":1704,"nodeType":"UncheckedBlock","src":"1794:133:4","statements":[{"assignments":[1684],"declarations":[{"constant":false,"id":1684,"mutability":"mutable","name":"c","nameLocation":"1826:1:4","nodeType":"VariableDeclaration","scope":1704,"src":"1818:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1683,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1688,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1685,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"1830:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1686,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1676,"src":"1834:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:4"},{"expression":{"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1689,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"1849:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1690,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1684,"src":"1859:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1691,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"1864:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1694,"nodeType":"ExpressionStatement","src":"1849:16:4"},{"expression":{"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1695,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"1879:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1696,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1684,"src":"1888:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1699,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"1908:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1697,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"1892:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"1892:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1703,"nodeType":"ExpressionStatement","src":"1879:37:4"}]}]},"documentation":{"id":1672,"nodeType":"StructuredDocumentation","src":"1583:105:4","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":1706,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:4","nodeType":"FunctionDefinition","parameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1674,"mutability":"mutable","name":"a","nameLocation":"1717:1:4","nodeType":"VariableDeclaration","scope":1706,"src":"1709:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1673,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1676,"mutability":"mutable","name":"b","nameLocation":"1728:1:4","nodeType":"VariableDeclaration","scope":1706,"src":"1720:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1675,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:4"},"returnParameters":{"id":1682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1679,"mutability":"mutable","name":"success","nameLocation":"1759:7:4","nodeType":"VariableDeclaration","scope":1706,"src":"1754:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1678,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1681,"mutability":"mutable","name":"result","nameLocation":"1776:6:4","nodeType":"VariableDeclaration","scope":1706,"src":"1768:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:4"},"scope":3252,"src":"1693:240:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1740,"nodeType":"Block","src":"2143:149:4","statements":[{"id":1739,"nodeType":"UncheckedBlock","src":"2153:133:4","statements":[{"assignments":[1719],"declarations":[{"constant":false,"id":1719,"mutability":"mutable","name":"c","nameLocation":"2185:1:4","nodeType":"VariableDeclaration","scope":1739,"src":"2177:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1723,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"2189:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1721,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1711,"src":"2193:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:4"},{"expression":{"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1724,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1714,"src":"2208:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1725,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"2218:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1726,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"2223:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1729,"nodeType":"ExpressionStatement","src":"2208:16:4"},{"expression":{"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"2238:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1731,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"2247:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1734,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1714,"src":"2267:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1732,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"2251:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"2251:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1738,"nodeType":"ExpressionStatement","src":"2238:37:4"}]}]},"documentation":{"id":1707,"nodeType":"StructuredDocumentation","src":"1939:108:4","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":1741,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:4","nodeType":"FunctionDefinition","parameters":{"id":1712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1709,"mutability":"mutable","name":"a","nameLocation":"2076:1:4","nodeType":"VariableDeclaration","scope":1741,"src":"2068:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1708,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1711,"mutability":"mutable","name":"b","nameLocation":"2087:1:4","nodeType":"VariableDeclaration","scope":1741,"src":"2079:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1710,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:4"},"returnParameters":{"id":1717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1714,"mutability":"mutable","name":"success","nameLocation":"2118:7:4","nodeType":"VariableDeclaration","scope":1741,"src":"2113:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1713,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1716,"mutability":"mutable","name":"result","nameLocation":"2135:6:4","nodeType":"VariableDeclaration","scope":1741,"src":"2127:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1715,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:4"},"scope":3252,"src":"2052:240:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1770,"nodeType":"Block","src":"2505:391:4","statements":[{"id":1769,"nodeType":"UncheckedBlock","src":"2515:375:4","statements":[{"assignments":[1754],"declarations":[{"constant":false,"id":1754,"mutability":"mutable","name":"c","nameLocation":"2547:1:4","nodeType":"VariableDeclaration","scope":1769,"src":"2539:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1758,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1755,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1744,"src":"2551:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1756,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"2555:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:4"},{"AST":{"nativeSrc":"2595:188:4","nodeType":"YulBlock","src":"2595:188:4","statements":[{"nativeSrc":"2727:42:4","nodeType":"YulAssignment","src":"2727:42:4","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:4","nodeType":"YulIdentifier","src":"2748:1:4"},{"name":"a","nativeSrc":"2751:1:4","nodeType":"YulIdentifier","src":"2751:1:4"}],"functionName":{"name":"div","nativeSrc":"2744:3:4","nodeType":"YulIdentifier","src":"2744:3:4"},"nativeSrc":"2744:9:4","nodeType":"YulFunctionCall","src":"2744:9:4"},{"name":"b","nativeSrc":"2755:1:4","nodeType":"YulIdentifier","src":"2755:1:4"}],"functionName":{"name":"eq","nativeSrc":"2741:2:4","nodeType":"YulIdentifier","src":"2741:2:4"},"nativeSrc":"2741:16:4","nodeType":"YulFunctionCall","src":"2741:16:4"},{"arguments":[{"name":"a","nativeSrc":"2766:1:4","nodeType":"YulIdentifier","src":"2766:1:4"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:4","nodeType":"YulIdentifier","src":"2759:6:4"},"nativeSrc":"2759:9:4","nodeType":"YulFunctionCall","src":"2759:9:4"}],"functionName":{"name":"or","nativeSrc":"2738:2:4","nodeType":"YulIdentifier","src":"2738:2:4"},"nativeSrc":"2738:31:4","nodeType":"YulFunctionCall","src":"2738:31:4"},"variableNames":[{"name":"success","nativeSrc":"2727:7:4","nodeType":"YulIdentifier","src":"2727:7:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1744,"isOffset":false,"isSlot":false,"src":"2751:1:4","valueSize":1},{"declaration":1744,"isOffset":false,"isSlot":false,"src":"2766:1:4","valueSize":1},{"declaration":1746,"isOffset":false,"isSlot":false,"src":"2755:1:4","valueSize":1},{"declaration":1754,"isOffset":false,"isSlot":false,"src":"2748:1:4","valueSize":1},{"declaration":1749,"isOffset":false,"isSlot":false,"src":"2727:7:4","valueSize":1}],"flags":["memory-safe"],"id":1759,"nodeType":"InlineAssembly","src":"2570:213:4"},{"expression":{"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1760,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1751,"src":"2842:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1761,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1754,"src":"2851:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"2871:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1762,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"2855:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"2855:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1768,"nodeType":"ExpressionStatement","src":"2842:37:4"}]}]},"documentation":{"id":1742,"nodeType":"StructuredDocumentation","src":"2298:111:4","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":1771,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:4","nodeType":"FunctionDefinition","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"a","nameLocation":"2438:1:4","nodeType":"VariableDeclaration","scope":1771,"src":"2430:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1743,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1746,"mutability":"mutable","name":"b","nameLocation":"2449:1:4","nodeType":"VariableDeclaration","scope":1771,"src":"2441:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1745,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:4"},"returnParameters":{"id":1752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"success","nameLocation":"2480:7:4","nodeType":"VariableDeclaration","scope":1771,"src":"2475:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1748,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1751,"mutability":"mutable","name":"result","nameLocation":"2497:6:4","nodeType":"VariableDeclaration","scope":1771,"src":"2489:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1750,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:4"},"scope":3252,"src":"2414:482:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1791,"nodeType":"Block","src":"3111:231:4","statements":[{"id":1790,"nodeType":"UncheckedBlock","src":"3121:215:4","statements":[{"expression":{"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1783,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"3145:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1784,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"3155:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1788,"nodeType":"ExpressionStatement","src":"3145:15:4"},{"AST":{"nativeSrc":"3199:127:4","nodeType":"YulBlock","src":"3199:127:4","statements":[{"nativeSrc":"3293:19:4","nodeType":"YulAssignment","src":"3293:19:4","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:4","nodeType":"YulIdentifier","src":"3307:1:4"},{"name":"b","nativeSrc":"3310:1:4","nodeType":"YulIdentifier","src":"3310:1:4"}],"functionName":{"name":"div","nativeSrc":"3303:3:4","nodeType":"YulIdentifier","src":"3303:3:4"},"nativeSrc":"3303:9:4","nodeType":"YulFunctionCall","src":"3303:9:4"},"variableNames":[{"name":"result","nativeSrc":"3293:6:4","nodeType":"YulIdentifier","src":"3293:6:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1774,"isOffset":false,"isSlot":false,"src":"3307:1:4","valueSize":1},{"declaration":1776,"isOffset":false,"isSlot":false,"src":"3310:1:4","valueSize":1},{"declaration":1781,"isOffset":false,"isSlot":false,"src":"3293:6:4","valueSize":1}],"flags":["memory-safe"],"id":1789,"nodeType":"InlineAssembly","src":"3174:152:4"}]}]},"documentation":{"id":1772,"nodeType":"StructuredDocumentation","src":"2902:113:4","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":1792,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:4","nodeType":"FunctionDefinition","parameters":{"id":1777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1774,"mutability":"mutable","name":"a","nameLocation":"3044:1:4","nodeType":"VariableDeclaration","scope":1792,"src":"3036:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1773,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1776,"mutability":"mutable","name":"b","nameLocation":"3055:1:4","nodeType":"VariableDeclaration","scope":1792,"src":"3047:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1775,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:4"},"returnParameters":{"id":1782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1779,"mutability":"mutable","name":"success","nameLocation":"3086:7:4","nodeType":"VariableDeclaration","scope":1792,"src":"3081:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1778,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1781,"mutability":"mutable","name":"result","nameLocation":"3103:6:4","nodeType":"VariableDeclaration","scope":1792,"src":"3095:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:4"},"scope":3252,"src":"3020:322:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1812,"nodeType":"Block","src":"3567:231:4","statements":[{"id":1811,"nodeType":"UncheckedBlock","src":"3577:215:4","statements":[{"expression":{"id":1808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1804,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"3601:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1805,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"3611:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1809,"nodeType":"ExpressionStatement","src":"3601:15:4"},{"AST":{"nativeSrc":"3655:127:4","nodeType":"YulBlock","src":"3655:127:4","statements":[{"nativeSrc":"3749:19:4","nodeType":"YulAssignment","src":"3749:19:4","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:4","nodeType":"YulIdentifier","src":"3763:1:4"},{"name":"b","nativeSrc":"3766:1:4","nodeType":"YulIdentifier","src":"3766:1:4"}],"functionName":{"name":"mod","nativeSrc":"3759:3:4","nodeType":"YulIdentifier","src":"3759:3:4"},"nativeSrc":"3759:9:4","nodeType":"YulFunctionCall","src":"3759:9:4"},"variableNames":[{"name":"result","nativeSrc":"3749:6:4","nodeType":"YulIdentifier","src":"3749:6:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1795,"isOffset":false,"isSlot":false,"src":"3763:1:4","valueSize":1},{"declaration":1797,"isOffset":false,"isSlot":false,"src":"3766:1:4","valueSize":1},{"declaration":1802,"isOffset":false,"isSlot":false,"src":"3749:6:4","valueSize":1}],"flags":["memory-safe"],"id":1810,"nodeType":"InlineAssembly","src":"3630:152:4"}]}]},"documentation":{"id":1793,"nodeType":"StructuredDocumentation","src":"3348:123:4","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":1813,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:4","nodeType":"FunctionDefinition","parameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1795,"mutability":"mutable","name":"a","nameLocation":"3500:1:4","nodeType":"VariableDeclaration","scope":1813,"src":"3492:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1794,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1797,"mutability":"mutable","name":"b","nameLocation":"3511:1:4","nodeType":"VariableDeclaration","scope":1813,"src":"3503:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1796,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:4"},"returnParameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"success","nameLocation":"3542:7:4","nodeType":"VariableDeclaration","scope":1813,"src":"3537:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1799,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"result","nameLocation":"3559:6:4","nodeType":"VariableDeclaration","scope":1813,"src":"3551:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1801,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:4"},"scope":3252,"src":"3476:322:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1842,"nodeType":"Block","src":"3989:122:4","statements":[{"assignments":[1824,1826],"declarations":[{"constant":false,"id":1824,"mutability":"mutable","name":"success","nameLocation":"4005:7:4","nodeType":"VariableDeclaration","scope":1842,"src":"4000:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1823,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1826,"mutability":"mutable","name":"result","nameLocation":"4022:6:4","nodeType":"VariableDeclaration","scope":1842,"src":"4014:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1825,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1831,"initialValue":{"arguments":[{"id":1828,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"4039:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1829,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"4042:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1827,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"4032:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:4"},{"expression":{"arguments":[{"id":1833,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1824,"src":"4069:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1834,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"4078:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":1837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1836,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1835,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:4","memberName":"max","nodeType":"MemberAccess","src":"4086:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1832,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"4061:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1822,"id":1841,"nodeType":"Return","src":"4054:50:4"}]},"documentation":{"id":1814,"nodeType":"StructuredDocumentation","src":"3804:103:4","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":1843,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:4","nodeType":"FunctionDefinition","parameters":{"id":1819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"mutability":"mutable","name":"a","nameLocation":"3943:1:4","nodeType":"VariableDeclaration","scope":1843,"src":"3935:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1815,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1818,"mutability":"mutable","name":"b","nameLocation":"3954:1:4","nodeType":"VariableDeclaration","scope":1843,"src":"3946:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1817,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:4"},"returnParameters":{"id":1822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1843,"src":"3980:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1820,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:4"},"scope":3252,"src":"3912:199:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1862,"nodeType":"Block","src":"4294:73:4","statements":[{"assignments":[null,1854],"declarations":[null,{"constant":false,"id":1854,"mutability":"mutable","name":"result","nameLocation":"4315:6:4","nodeType":"VariableDeclaration","scope":1862,"src":"4307:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1853,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1859,"initialValue":{"arguments":[{"id":1856,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1846,"src":"4332:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1857,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"4335:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1855,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"4325:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:4"},{"expression":{"id":1860,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"4354:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1861,"nodeType":"Return","src":"4347:13:4"}]},"documentation":{"id":1844,"nodeType":"StructuredDocumentation","src":"4117:95:4","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":1863,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:4","nodeType":"FunctionDefinition","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1846,"mutability":"mutable","name":"a","nameLocation":"4248:1:4","nodeType":"VariableDeclaration","scope":1863,"src":"4240:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1845,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1848,"mutability":"mutable","name":"b","nameLocation":"4259:1:4","nodeType":"VariableDeclaration","scope":1863,"src":"4251:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1847,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:4"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1863,"src":"4285:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:4"},"scope":3252,"src":"4217:150:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1892,"nodeType":"Block","src":"4564:122:4","statements":[{"assignments":[1874,1876],"declarations":[{"constant":false,"id":1874,"mutability":"mutable","name":"success","nameLocation":"4580:7:4","nodeType":"VariableDeclaration","scope":1892,"src":"4575:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1873,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1876,"mutability":"mutable","name":"result","nameLocation":"4597:6:4","nodeType":"VariableDeclaration","scope":1892,"src":"4589:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1881,"initialValue":{"arguments":[{"id":1878,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1866,"src":"4614:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1879,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"4617:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1877,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"4607:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:4"},{"expression":{"arguments":[{"id":1883,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1874,"src":"4644:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1884,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"4653:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":1887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1886,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1885,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:4","memberName":"max","nodeType":"MemberAccess","src":"4661:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1882,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"4636:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1872,"id":1891,"nodeType":"Return","src":"4629:50:4"}]},"documentation":{"id":1864,"nodeType":"StructuredDocumentation","src":"4373:109:4","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":1893,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:4","nodeType":"FunctionDefinition","parameters":{"id":1869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1866,"mutability":"mutable","name":"a","nameLocation":"4518:1:4","nodeType":"VariableDeclaration","scope":1893,"src":"4510:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1865,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1868,"mutability":"mutable","name":"b","nameLocation":"4529:1:4","nodeType":"VariableDeclaration","scope":1893,"src":"4521:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1867,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:4"},"returnParameters":{"id":1872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1893,"src":"4555:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1870,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:4"},"scope":3252,"src":"4487:199:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1919,"nodeType":"Block","src":"5158:207:4","statements":[{"id":1918,"nodeType":"UncheckedBlock","src":"5168:191:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1905,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"5306:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1906,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5312:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1907,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"5316:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5312:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5311:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1912,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"5337:9:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1910,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"5321:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5330:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"5321:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5311:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5310:38:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5306:42:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1904,"id":1917,"nodeType":"Return","src":"5299:49:4"}]}]},"documentation":{"id":1894,"nodeType":"StructuredDocumentation","src":"4692:374:4","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":1920,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5080:7:4","nodeType":"FunctionDefinition","parameters":{"id":1901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"condition","nameLocation":"5093:9:4","nodeType":"VariableDeclaration","scope":1920,"src":"5088:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1895,"name":"bool","nodeType":"ElementaryTypeName","src":"5088:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"a","nameLocation":"5112:1:4","nodeType":"VariableDeclaration","scope":1920,"src":"5104:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"5104:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1900,"mutability":"mutable","name":"b","nameLocation":"5123:1:4","nodeType":"VariableDeclaration","scope":1920,"src":"5115:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1899,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5087:38:4"},"returnParameters":{"id":1904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1920,"src":"5149:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1902,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5148:9:4"},"scope":3252,"src":"5071:294:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1938,"nodeType":"Block","src":"5502:44:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1931,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"5527:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1932,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"5531:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1934,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"5534:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1935,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"5537:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1930,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"5519:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5519:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1929,"id":1937,"nodeType":"Return","src":"5512:27:4"}]},"documentation":{"id":1921,"nodeType":"StructuredDocumentation","src":"5371:59:4","text":" @dev Returns the largest of two numbers."},"id":1939,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5444:3:4","nodeType":"FunctionDefinition","parameters":{"id":1926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1923,"mutability":"mutable","name":"a","nameLocation":"5456:1:4","nodeType":"VariableDeclaration","scope":1939,"src":"5448:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1922,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1925,"mutability":"mutable","name":"b","nameLocation":"5467:1:4","nodeType":"VariableDeclaration","scope":1939,"src":"5459:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5447:22:4"},"returnParameters":{"id":1929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1939,"src":"5493:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1927,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5492:9:4"},"scope":3252,"src":"5435:111:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1957,"nodeType":"Block","src":"5684:44:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1950,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"5709:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1951,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"5713:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1953,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"5716:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1954,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"5719:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1949,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"5701:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5701:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1948,"id":1956,"nodeType":"Return","src":"5694:27:4"}]},"documentation":{"id":1940,"nodeType":"StructuredDocumentation","src":"5552:60:4","text":" @dev Returns the smallest of two numbers."},"id":1958,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5626:3:4","nodeType":"FunctionDefinition","parameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1942,"mutability":"mutable","name":"a","nameLocation":"5638:1:4","nodeType":"VariableDeclaration","scope":1958,"src":"5630:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1941,"name":"uint256","nodeType":"ElementaryTypeName","src":"5630:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1944,"mutability":"mutable","name":"b","nameLocation":"5649:1:4","nodeType":"VariableDeclaration","scope":1958,"src":"5641:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1943,"name":"uint256","nodeType":"ElementaryTypeName","src":"5641:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5629:22:4"},"returnParameters":{"id":1948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1958,"src":"5675:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1946,"name":"uint256","nodeType":"ElementaryTypeName","src":"5675:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:9:4"},"scope":3252,"src":"5617:111:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1980,"nodeType":"Block","src":"5912:82:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1968,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"5967:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1969,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"5971:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5967:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1971,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5966:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1972,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"5977:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1973,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"5981:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5976:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5986:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5976:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1967,"id":1979,"nodeType":"Return","src":"5959:28:4"}]},"documentation":{"id":1959,"nodeType":"StructuredDocumentation","src":"5734:102:4","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1981,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5850:7:4","nodeType":"FunctionDefinition","parameters":{"id":1964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"a","nameLocation":"5866:1:4","nodeType":"VariableDeclaration","scope":1981,"src":"5858:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1960,"name":"uint256","nodeType":"ElementaryTypeName","src":"5858:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1963,"mutability":"mutable","name":"b","nameLocation":"5877:1:4","nodeType":"VariableDeclaration","scope":1981,"src":"5869:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1962,"name":"uint256","nodeType":"ElementaryTypeName","src":"5869:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5857:22:4"},"returnParameters":{"id":1967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1981,"src":"5903:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1965,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5902:9:4"},"scope":3252,"src":"5841:153:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2021,"nodeType":"Block","src":"6286:633:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1991,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1986,"src":"6300:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6305:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6300:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2002,"nodeType":"IfStatement","src":"6296:150:4","trueBody":{"id":2001,"nodeType":"Block","src":"6308:138:4","statements":[{"expression":{"arguments":[{"expression":{"id":1997,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"6412:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":1998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6418:16:4","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":196,"src":"6412:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1994,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"6400:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:5:4","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":228,"src":"6400:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2000,"nodeType":"ExpressionStatement","src":"6400:35:4"}]}},{"id":2020,"nodeType":"UncheckedBlock","src":"6829:84:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2005,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"6876:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6876:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2003,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"6860:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6869:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"6860:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6860:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2009,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"6887:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6887:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2012,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6886:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2013,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1986,"src":"6896:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6886:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6900:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6886:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2017,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6885:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6860:42:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1990,"id":2019,"nodeType":"Return","src":"6853:49:4"}]}]},"documentation":{"id":1982,"nodeType":"StructuredDocumentation","src":"6000:210:4","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":2022,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6224:7:4","nodeType":"FunctionDefinition","parameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"a","nameLocation":"6240:1:4","nodeType":"VariableDeclaration","scope":2022,"src":"6232:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1986,"mutability":"mutable","name":"b","nameLocation":"6251:1:4","nodeType":"VariableDeclaration","scope":2022,"src":"6243:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1985,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6231:22:4"},"returnParameters":{"id":1990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2022,"src":"6277:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1988,"name":"uint256","nodeType":"ElementaryTypeName","src":"6277:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6276:9:4"},"scope":3252,"src":"6215:704:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2157,"nodeType":"Block","src":"7340:3585:4","statements":[{"id":2156,"nodeType":"UncheckedBlock","src":"7350:3569:4","statements":[{"assignments":[2035,2037],"declarations":[{"constant":false,"id":2035,"mutability":"mutable","name":"high","nameLocation":"7383:4:4","nodeType":"VariableDeclaration","scope":2156,"src":"7375:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2034,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2037,"mutability":"mutable","name":"low","nameLocation":"7397:3:4","nodeType":"VariableDeclaration","scope":2156,"src":"7389:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2036,"name":"uint256","nodeType":"ElementaryTypeName","src":"7389:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2042,"initialValue":{"arguments":[{"id":2039,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"7411:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2040,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"7414:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2038,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1671,"src":"7404:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7404:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7374:42:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2043,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"7498:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7498:9:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2051,"nodeType":"IfStatement","src":"7494:365:4","trueBody":{"id":2050,"nodeType":"Block","src":"7509:350:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2046,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2037,"src":"7827:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2047,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"7833:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7827:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2033,"id":2049,"nodeType":"Return","src":"7820:24:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2052,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"7969:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2053,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"7984:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7969:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2070,"nodeType":"IfStatement","src":"7965:142:4","trueBody":{"id":2069,"nodeType":"Block","src":"7990:117:4","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2059,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"8028:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8043:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8028:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":2062,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"8046:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8052:16:4","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":196,"src":"8046:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2064,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"8070:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8076:14:4","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":192,"src":"8070:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2058,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"8020:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":2066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8020:71:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2055,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"8008:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8014:5:4","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":228,"src":"8008:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:84:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2068,"nodeType":"ExpressionStatement","src":"8008:84:4"}]}},{"assignments":[2072],"declarations":[{"constant":false,"id":2072,"mutability":"mutable","name":"remainder","nameLocation":"8367:9:4","nodeType":"VariableDeclaration","scope":2156,"src":"8359:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2071,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2073,"nodeType":"VariableDeclarationStatement","src":"8359:17:4"},{"AST":{"nativeSrc":"8415:283:4","nodeType":"YulBlock","src":"8415:283:4","statements":[{"nativeSrc":"8484:38:4","nodeType":"YulAssignment","src":"8484:38:4","value":{"arguments":[{"name":"x","nativeSrc":"8504:1:4","nodeType":"YulIdentifier","src":"8504:1:4"},{"name":"y","nativeSrc":"8507:1:4","nodeType":"YulIdentifier","src":"8507:1:4"},{"name":"denominator","nativeSrc":"8510:11:4","nodeType":"YulIdentifier","src":"8510:11:4"}],"functionName":{"name":"mulmod","nativeSrc":"8497:6:4","nodeType":"YulIdentifier","src":"8497:6:4"},"nativeSrc":"8497:25:4","nodeType":"YulFunctionCall","src":"8497:25:4"},"variableNames":[{"name":"remainder","nativeSrc":"8484:9:4","nodeType":"YulIdentifier","src":"8484:9:4"}]},{"nativeSrc":"8604:37:4","nodeType":"YulAssignment","src":"8604:37:4","value":{"arguments":[{"name":"high","nativeSrc":"8616:4:4","nodeType":"YulIdentifier","src":"8616:4:4"},{"arguments":[{"name":"remainder","nativeSrc":"8625:9:4","nodeType":"YulIdentifier","src":"8625:9:4"},{"name":"low","nativeSrc":"8636:3:4","nodeType":"YulIdentifier","src":"8636:3:4"}],"functionName":{"name":"gt","nativeSrc":"8622:2:4","nodeType":"YulIdentifier","src":"8622:2:4"},"nativeSrc":"8622:18:4","nodeType":"YulFunctionCall","src":"8622:18:4"}],"functionName":{"name":"sub","nativeSrc":"8612:3:4","nodeType":"YulIdentifier","src":"8612:3:4"},"nativeSrc":"8612:29:4","nodeType":"YulFunctionCall","src":"8612:29:4"},"variableNames":[{"name":"high","nativeSrc":"8604:4:4","nodeType":"YulIdentifier","src":"8604:4:4"}]},{"nativeSrc":"8658:26:4","nodeType":"YulAssignment","src":"8658:26:4","value":{"arguments":[{"name":"low","nativeSrc":"8669:3:4","nodeType":"YulIdentifier","src":"8669:3:4"},{"name":"remainder","nativeSrc":"8674:9:4","nodeType":"YulIdentifier","src":"8674:9:4"}],"functionName":{"name":"sub","nativeSrc":"8665:3:4","nodeType":"YulIdentifier","src":"8665:3:4"},"nativeSrc":"8665:19:4","nodeType":"YulFunctionCall","src":"8665:19:4"},"variableNames":[{"name":"low","nativeSrc":"8658:3:4","nodeType":"YulIdentifier","src":"8658:3:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2029,"isOffset":false,"isSlot":false,"src":"8510:11:4","valueSize":1},{"declaration":2035,"isOffset":false,"isSlot":false,"src":"8604:4:4","valueSize":1},{"declaration":2035,"isOffset":false,"isSlot":false,"src":"8616:4:4","valueSize":1},{"declaration":2037,"isOffset":false,"isSlot":false,"src":"8636:3:4","valueSize":1},{"declaration":2037,"isOffset":false,"isSlot":false,"src":"8658:3:4","valueSize":1},{"declaration":2037,"isOffset":false,"isSlot":false,"src":"8669:3:4","valueSize":1},{"declaration":2072,"isOffset":false,"isSlot":false,"src":"8484:9:4","valueSize":1},{"declaration":2072,"isOffset":false,"isSlot":false,"src":"8625:9:4","valueSize":1},{"declaration":2072,"isOffset":false,"isSlot":false,"src":"8674:9:4","valueSize":1},{"declaration":2025,"isOffset":false,"isSlot":false,"src":"8504:1:4","valueSize":1},{"declaration":2027,"isOffset":false,"isSlot":false,"src":"8507:1:4","valueSize":1}],"flags":["memory-safe"],"id":2074,"nodeType":"InlineAssembly","src":"8390:308:4"},{"assignments":[2076],"declarations":[{"constant":false,"id":2076,"mutability":"mutable","name":"twos","nameLocation":"8910:4:4","nodeType":"VariableDeclaration","scope":2156,"src":"8902:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2075,"name":"uint256","nodeType":"ElementaryTypeName","src":"8902:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2083,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2077,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"8917:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":2078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2079,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"8936:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8932:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2081,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8917:31:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8902:46:4"},{"AST":{"nativeSrc":"8987:359:4","nodeType":"YulBlock","src":"8987:359:4","statements":[{"nativeSrc":"9052:37:4","nodeType":"YulAssignment","src":"9052:37:4","value":{"arguments":[{"name":"denominator","nativeSrc":"9071:11:4","nodeType":"YulIdentifier","src":"9071:11:4"},{"name":"twos","nativeSrc":"9084:4:4","nodeType":"YulIdentifier","src":"9084:4:4"}],"functionName":{"name":"div","nativeSrc":"9067:3:4","nodeType":"YulIdentifier","src":"9067:3:4"},"nativeSrc":"9067:22:4","nodeType":"YulFunctionCall","src":"9067:22:4"},"variableNames":[{"name":"denominator","nativeSrc":"9052:11:4","nodeType":"YulIdentifier","src":"9052:11:4"}]},{"nativeSrc":"9153:21:4","nodeType":"YulAssignment","src":"9153:21:4","value":{"arguments":[{"name":"low","nativeSrc":"9164:3:4","nodeType":"YulIdentifier","src":"9164:3:4"},{"name":"twos","nativeSrc":"9169:4:4","nodeType":"YulIdentifier","src":"9169:4:4"}],"functionName":{"name":"div","nativeSrc":"9160:3:4","nodeType":"YulIdentifier","src":"9160:3:4"},"nativeSrc":"9160:14:4","nodeType":"YulFunctionCall","src":"9160:14:4"},"variableNames":[{"name":"low","nativeSrc":"9153:3:4","nodeType":"YulIdentifier","src":"9153:3:4"}]},{"nativeSrc":"9293:39:4","nodeType":"YulAssignment","src":"9293:39:4","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9313:1:4","nodeType":"YulLiteral","src":"9313:1:4","type":"","value":"0"},{"name":"twos","nativeSrc":"9316:4:4","nodeType":"YulIdentifier","src":"9316:4:4"}],"functionName":{"name":"sub","nativeSrc":"9309:3:4","nodeType":"YulIdentifier","src":"9309:3:4"},"nativeSrc":"9309:12:4","nodeType":"YulFunctionCall","src":"9309:12:4"},{"name":"twos","nativeSrc":"9323:4:4","nodeType":"YulIdentifier","src":"9323:4:4"}],"functionName":{"name":"div","nativeSrc":"9305:3:4","nodeType":"YulIdentifier","src":"9305:3:4"},"nativeSrc":"9305:23:4","nodeType":"YulFunctionCall","src":"9305:23:4"},{"kind":"number","nativeSrc":"9330:1:4","nodeType":"YulLiteral","src":"9330:1:4","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9301:3:4","nodeType":"YulIdentifier","src":"9301:3:4"},"nativeSrc":"9301:31:4","nodeType":"YulFunctionCall","src":"9301:31:4"},"variableNames":[{"name":"twos","nativeSrc":"9293:4:4","nodeType":"YulIdentifier","src":"9293:4:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2029,"isOffset":false,"isSlot":false,"src":"9052:11:4","valueSize":1},{"declaration":2029,"isOffset":false,"isSlot":false,"src":"9071:11:4","valueSize":1},{"declaration":2037,"isOffset":false,"isSlot":false,"src":"9153:3:4","valueSize":1},{"declaration":2037,"isOffset":false,"isSlot":false,"src":"9164:3:4","valueSize":1},{"declaration":2076,"isOffset":false,"isSlot":false,"src":"9084:4:4","valueSize":1},{"declaration":2076,"isOffset":false,"isSlot":false,"src":"9169:4:4","valueSize":1},{"declaration":2076,"isOffset":false,"isSlot":false,"src":"9293:4:4","valueSize":1},{"declaration":2076,"isOffset":false,"isSlot":false,"src":"9316:4:4","valueSize":1},{"declaration":2076,"isOffset":false,"isSlot":false,"src":"9323:4:4","valueSize":1}],"flags":["memory-safe"],"id":2084,"nodeType":"InlineAssembly","src":"8962:384:4"},{"expression":{"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2085,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2037,"src":"9409:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"9416:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2087,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9423:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9416:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2090,"nodeType":"ExpressionStatement","src":"9409:18:4"},{"assignments":[2092],"declarations":[{"constant":false,"id":2092,"mutability":"mutable","name":"inverse","nameLocation":"9770:7:4","nodeType":"VariableDeclaration","scope":2156,"src":"9762:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2091,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2099,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9781:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2094,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"9785:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9781:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9780:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9800:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9780:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9762:39:4"},{"expression":{"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2100,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10018:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10029:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2102,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"10033:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2103,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10047:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10033:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10029:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10018:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2107,"nodeType":"ExpressionStatement","src":"10018:36:4"},{"expression":{"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2108,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10088:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10099:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2110,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"10103:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2111,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10117:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10099:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10088:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2115,"nodeType":"ExpressionStatement","src":"10088:36:4"},{"expression":{"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2116,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10160:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10171:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2118,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"10175:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2119,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10189:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10175:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10160:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2123,"nodeType":"ExpressionStatement","src":"10160:36:4"},{"expression":{"id":2130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2124,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10231:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10242:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2126,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"10246:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2127,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10260:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10246:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10242:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10231:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2131,"nodeType":"ExpressionStatement","src":"10231:36:4"},{"expression":{"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2132,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10304:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10315:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2134,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"10319:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2135,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10333:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10319:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10315:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10304:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2139,"nodeType":"ExpressionStatement","src":"10304:36:4"},{"expression":{"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2140,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10378:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10389:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2142,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"10393:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2143,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10407:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10393:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10389:25:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10378:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2147,"nodeType":"ExpressionStatement","src":"10378:36:4"},{"expression":{"id":2152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2148,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"10859:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2037,"src":"10868:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2150,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"10874:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10868:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10859:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2153,"nodeType":"ExpressionStatement","src":"10859:22:4"},{"expression":{"id":2154,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"10902:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2033,"id":2155,"nodeType":"Return","src":"10895:13:4"}]}]},"documentation":{"id":2023,"nodeType":"StructuredDocumentation","src":"6925:312:4","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":2158,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7251:6:4","nodeType":"FunctionDefinition","parameters":{"id":2030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2025,"mutability":"mutable","name":"x","nameLocation":"7266:1:4","nodeType":"VariableDeclaration","scope":2158,"src":"7258:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2024,"name":"uint256","nodeType":"ElementaryTypeName","src":"7258:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2027,"mutability":"mutable","name":"y","nameLocation":"7277:1:4","nodeType":"VariableDeclaration","scope":2158,"src":"7269:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2026,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2029,"mutability":"mutable","name":"denominator","nameLocation":"7288:11:4","nodeType":"VariableDeclaration","scope":2158,"src":"7280:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2028,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7257:43:4"},"returnParameters":{"id":2033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2032,"mutability":"mutable","name":"result","nameLocation":"7332:6:4","nodeType":"VariableDeclaration","scope":2158,"src":"7324:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2031,"name":"uint256","nodeType":"ElementaryTypeName","src":"7324:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7323:16:4"},"scope":3252,"src":"7242:3683:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2194,"nodeType":"Block","src":"11164:128:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2174,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"11188:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2175,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2163,"src":"11191:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2176,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11194:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2173,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2158,2195],"referencedDeclaration":2158,"src":"11181:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11181:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2181,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2168,"src":"11242:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}],"id":2180,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"11225:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2184,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"11262:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2185,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2163,"src":"11265:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2186,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11268:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2183,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11255:6:4","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11255:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11283:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11255:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11225:59:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2178,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"11209:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11218:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"11209:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11209:76:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:104:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2172,"id":2193,"nodeType":"Return","src":"11174:111:4"}]},"documentation":{"id":2159,"nodeType":"StructuredDocumentation","src":"10931:118:4","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2195,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11063:6:4","nodeType":"FunctionDefinition","parameters":{"id":2169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"x","nameLocation":"11078:1:4","nodeType":"VariableDeclaration","scope":2195,"src":"11070:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2160,"name":"uint256","nodeType":"ElementaryTypeName","src":"11070:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2163,"mutability":"mutable","name":"y","nameLocation":"11089:1:4","nodeType":"VariableDeclaration","scope":2195,"src":"11081:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2162,"name":"uint256","nodeType":"ElementaryTypeName","src":"11081:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2165,"mutability":"mutable","name":"denominator","nameLocation":"11100:11:4","nodeType":"VariableDeclaration","scope":2195,"src":"11092:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2164,"name":"uint256","nodeType":"ElementaryTypeName","src":"11092:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2168,"mutability":"mutable","name":"rounding","nameLocation":"11122:8:4","nodeType":"VariableDeclaration","scope":2195,"src":"11113:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"},"typeName":{"id":2167,"nodeType":"UserDefinedTypeName","pathNode":{"id":2166,"name":"Rounding","nameLocations":["11113:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"11113:8:4"},"referencedDeclaration":1643,"src":"11113:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11069:62:4"},"returnParameters":{"id":2172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2195,"src":"11155:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2170,"name":"uint256","nodeType":"ElementaryTypeName","src":"11155:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:9:4"},"scope":3252,"src":"11054:238:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2244,"nodeType":"Block","src":"11500:245:4","statements":[{"id":2243,"nodeType":"UncheckedBlock","src":"11510:229:4","statements":[{"assignments":[2208,2210],"declarations":[{"constant":false,"id":2208,"mutability":"mutable","name":"high","nameLocation":"11543:4:4","nodeType":"VariableDeclaration","scope":2243,"src":"11535:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2207,"name":"uint256","nodeType":"ElementaryTypeName","src":"11535:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2210,"mutability":"mutable","name":"low","nameLocation":"11557:3:4","nodeType":"VariableDeclaration","scope":2243,"src":"11549:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"11549:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2215,"initialValue":{"arguments":[{"id":2212,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"11571:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2213,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"11574:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2211,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1671,"src":"11564:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":2214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11564:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11534:42:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2216,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"11594:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11602:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2218,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"11607:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11602:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11594:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2229,"nodeType":"IfStatement","src":"11590:86:4","trueBody":{"id":2228,"nodeType":"Block","src":"11610:66:4","statements":[{"expression":{"arguments":[{"expression":{"id":2224,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"11640:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11646:14:4","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":192,"src":"11640:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2221,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"11628:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11634:5:4","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":228,"src":"11628:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11628:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2227,"nodeType":"ExpressionStatement","src":"11628:33:4"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2230,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"11697:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":2231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11706:3:4","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"11712:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11706:7:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":2234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11705:9:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11697:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2236,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11696:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2237,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11719:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2238,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"11726:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11719:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2240,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11718:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11696:32:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2206,"id":2242,"nodeType":"Return","src":"11689:39:4"}]}]},"documentation":{"id":2196,"nodeType":"StructuredDocumentation","src":"11298:111:4","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":2245,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11423:6:4","nodeType":"FunctionDefinition","parameters":{"id":2203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2198,"mutability":"mutable","name":"x","nameLocation":"11438:1:4","nodeType":"VariableDeclaration","scope":2245,"src":"11430:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2197,"name":"uint256","nodeType":"ElementaryTypeName","src":"11430:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2200,"mutability":"mutable","name":"y","nameLocation":"11449:1:4","nodeType":"VariableDeclaration","scope":2245,"src":"11441:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2199,"name":"uint256","nodeType":"ElementaryTypeName","src":"11441:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2202,"mutability":"mutable","name":"n","nameLocation":"11458:1:4","nodeType":"VariableDeclaration","scope":2245,"src":"11452:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2201,"name":"uint8","nodeType":"ElementaryTypeName","src":"11452:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11429:31:4"},"returnParameters":{"id":2206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2205,"mutability":"mutable","name":"result","nameLocation":"11492:6:4","nodeType":"VariableDeclaration","scope":2245,"src":"11484:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2204,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:16:4"},"scope":3252,"src":"11414:331:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2283,"nodeType":"Block","src":"11963:113:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2261,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"11987:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2262,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"11990:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2263,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"11993:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2260,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[2245,2284],"referencedDeclaration":2245,"src":"11980:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11980:15:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2268,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2255,"src":"12031:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}],"id":2267,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"12014:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2271,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"12051:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2272,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"12054:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12057:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2274,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"12062:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12057:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2270,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12044:6:4","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12044:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12067:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12044:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12014:54:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2265,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"11998:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12007:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"11998:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11998:71:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11980:89:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2259,"id":2282,"nodeType":"Return","src":"11973:96:4"}]},"documentation":{"id":2246,"nodeType":"StructuredDocumentation","src":"11751:109:4","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":2284,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11874:6:4","nodeType":"FunctionDefinition","parameters":{"id":2256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2248,"mutability":"mutable","name":"x","nameLocation":"11889:1:4","nodeType":"VariableDeclaration","scope":2284,"src":"11881:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2247,"name":"uint256","nodeType":"ElementaryTypeName","src":"11881:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2250,"mutability":"mutable","name":"y","nameLocation":"11900:1:4","nodeType":"VariableDeclaration","scope":2284,"src":"11892:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2249,"name":"uint256","nodeType":"ElementaryTypeName","src":"11892:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2252,"mutability":"mutable","name":"n","nameLocation":"11909:1:4","nodeType":"VariableDeclaration","scope":2284,"src":"11903:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2251,"name":"uint8","nodeType":"ElementaryTypeName","src":"11903:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2255,"mutability":"mutable","name":"rounding","nameLocation":"11921:8:4","nodeType":"VariableDeclaration","scope":2284,"src":"11912:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"},"typeName":{"id":2254,"nodeType":"UserDefinedTypeName","pathNode":{"id":2253,"name":"Rounding","nameLocations":["11912:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"11912:8:4"},"referencedDeclaration":1643,"src":"11912:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11880:50:4"},"returnParameters":{"id":2259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2284,"src":"11954:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2257,"name":"uint256","nodeType":"ElementaryTypeName","src":"11954:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11953:9:4"},"scope":3252,"src":"11865:211:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2380,"nodeType":"Block","src":"12710:1849:4","statements":[{"id":2379,"nodeType":"UncheckedBlock","src":"12720:1833:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2294,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"12748:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12753:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12748:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2299,"nodeType":"IfStatement","src":"12744:20:4","trueBody":{"expression":{"hexValue":"30","id":2297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2293,"id":2298,"nodeType":"Return","src":"12756:8:4"}},{"assignments":[2301],"declarations":[{"constant":false,"id":2301,"mutability":"mutable","name":"remainder","nameLocation":"13243:9:4","nodeType":"VariableDeclaration","scope":2379,"src":"13235:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2300,"name":"uint256","nodeType":"ElementaryTypeName","src":"13235:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2305,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2302,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"13255:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":2303,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"13259:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13255:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13235:25:4"},{"assignments":[2307],"declarations":[{"constant":false,"id":2307,"mutability":"mutable","name":"gcd","nameLocation":"13282:3:4","nodeType":"VariableDeclaration","scope":2379,"src":"13274:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"13274:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2309,"initialValue":{"id":2308,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"13288:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13274:15:4"},{"assignments":[2311],"declarations":[{"constant":false,"id":2311,"mutability":"mutable","name":"x","nameLocation":"13432:1:4","nodeType":"VariableDeclaration","scope":2379,"src":"13425:8:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2310,"name":"int256","nodeType":"ElementaryTypeName","src":"13425:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2313,"initialValue":{"hexValue":"30","id":2312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13425:12:4"},{"assignments":[2315],"declarations":[{"constant":false,"id":2315,"mutability":"mutable","name":"y","nameLocation":"13458:1:4","nodeType":"VariableDeclaration","scope":2379,"src":"13451:8:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2314,"name":"int256","nodeType":"ElementaryTypeName","src":"13451:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2317,"initialValue":{"hexValue":"31","id":2316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13462:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13451:12:4"},{"body":{"id":2354,"nodeType":"Block","src":"13501:882:4","statements":[{"assignments":[2322],"declarations":[{"constant":false,"id":2322,"mutability":"mutable","name":"quotient","nameLocation":"13527:8:4","nodeType":"VariableDeclaration","scope":2354,"src":"13519:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2321,"name":"uint256","nodeType":"ElementaryTypeName","src":"13519:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2326,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2323,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"13538:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2324,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"13544:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13538:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13519:34:4"},{"expression":{"id":2337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2327,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"13573:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2328,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"13578:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2329,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13572:16:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":2330,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"13678:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2331,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"13923:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2332,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"13929:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2333,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"13941:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13929:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13923:26:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13591:376:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13572:395:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2338,"nodeType":"ExpressionStatement","src":"13572:395:4"},{"expression":{"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2339,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"13987:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2340,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"13990:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2341,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13986:6:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":2342,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"14072:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2343,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"14326:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"14330:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":2347,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"14341:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14334:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2345,"name":"int256","nodeType":"ElementaryTypeName","src":"14334:6:4","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14334:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14330:20:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14326:24:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2351,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13995:373:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"13986:382:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2353,"nodeType":"ExpressionStatement","src":"13986:382:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"13485:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13498:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13485:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2355,"nodeType":"WhileStatement","src":"13478:905:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2356,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"14401:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":2357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14408:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14401:8:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2361,"nodeType":"IfStatement","src":"14397:22:4","trueBody":{"expression":{"hexValue":"30","id":2359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14418:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2293,"id":2360,"nodeType":"Return","src":"14411:8:4"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2363,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"14470:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14474:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14470:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2366,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"14477:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14489:2:4","subExpression":{"id":2369,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"14490:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14481:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2367,"name":"uint256","nodeType":"ElementaryTypeName","src":"14481:7:4","typeDescriptions":{}}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14481:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14477:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":2375,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"14502:1:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14494:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2373,"name":"uint256","nodeType":"ElementaryTypeName","src":"14494:7:4","typeDescriptions":{}}},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14494:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2362,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"14462:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14462:43:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2293,"id":2378,"nodeType":"Return","src":"14455:50:4"}]}]},"documentation":{"id":2285,"nodeType":"StructuredDocumentation","src":"12082:553:4","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":2381,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12649:6:4","nodeType":"FunctionDefinition","parameters":{"id":2290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"mutability":"mutable","name":"a","nameLocation":"12664:1:4","nodeType":"VariableDeclaration","scope":2381,"src":"12656:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2286,"name":"uint256","nodeType":"ElementaryTypeName","src":"12656:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2289,"mutability":"mutable","name":"n","nameLocation":"12675:1:4","nodeType":"VariableDeclaration","scope":2381,"src":"12667:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2288,"name":"uint256","nodeType":"ElementaryTypeName","src":"12667:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12655:22:4"},"returnParameters":{"id":2293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2381,"src":"12701:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2291,"name":"uint256","nodeType":"ElementaryTypeName","src":"12701:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12700:9:4"},"scope":3252,"src":"12640:1919:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2401,"nodeType":"Block","src":"15159:82:4","statements":[{"id":2400,"nodeType":"UncheckedBlock","src":"15169:66:4","statements":[{"expression":{"arguments":[{"id":2393,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2384,"src":"15212:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2394,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2386,"src":"15215:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15219:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15215:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2386,"src":"15222:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2391,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"15200:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3252_$","typeString":"type(library Math)"}},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15205:6:4","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":2438,"src":"15200:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15200:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2390,"id":2399,"nodeType":"Return","src":"15193:31:4"}]}]},"documentation":{"id":2382,"nodeType":"StructuredDocumentation","src":"14565:514:4","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":2402,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15093:11:4","nodeType":"FunctionDefinition","parameters":{"id":2387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2384,"mutability":"mutable","name":"a","nameLocation":"15113:1:4","nodeType":"VariableDeclaration","scope":2402,"src":"15105:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2383,"name":"uint256","nodeType":"ElementaryTypeName","src":"15105:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2386,"mutability":"mutable","name":"p","nameLocation":"15124:1:4","nodeType":"VariableDeclaration","scope":2402,"src":"15116:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2385,"name":"uint256","nodeType":"ElementaryTypeName","src":"15116:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15104:22:4"},"returnParameters":{"id":2390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2402,"src":"15150:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2388,"name":"uint256","nodeType":"ElementaryTypeName","src":"15150:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15149:9:4"},"scope":3252,"src":"15084:157:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2437,"nodeType":"Block","src":"16011:174:4","statements":[{"assignments":[2415,2417],"declarations":[{"constant":false,"id":2415,"mutability":"mutable","name":"success","nameLocation":"16027:7:4","nodeType":"VariableDeclaration","scope":2437,"src":"16022:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2414,"name":"bool","nodeType":"ElementaryTypeName","src":"16022:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2417,"mutability":"mutable","name":"result","nameLocation":"16044:6:4","nodeType":"VariableDeclaration","scope":2437,"src":"16036:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2416,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2423,"initialValue":{"arguments":[{"id":2419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"16064:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2420,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2407,"src":"16067:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2421,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2409,"src":"16070:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2418,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[2462,2544],"referencedDeclaration":2462,"src":"16054:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16021:51:4"},{"condition":{"id":2425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16086:8:4","subExpression":{"id":2424,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"16087:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2434,"nodeType":"IfStatement","src":"16082:74:4","trueBody":{"id":2433,"nodeType":"Block","src":"16096:60:4","statements":[{"expression":{"arguments":[{"expression":{"id":2429,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"16122:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16128:16:4","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":196,"src":"16122:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2426,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"16110:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16116:5:4","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":228,"src":"16110:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2432,"nodeType":"ExpressionStatement","src":"16110:35:4"}]}},{"expression":{"id":2435,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2417,"src":"16172:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2413,"id":2436,"nodeType":"Return","src":"16165:13:4"}]},"documentation":{"id":2403,"nodeType":"StructuredDocumentation","src":"15247:678:4","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":2438,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15939:6:4","nodeType":"FunctionDefinition","parameters":{"id":2410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2405,"mutability":"mutable","name":"b","nameLocation":"15954:1:4","nodeType":"VariableDeclaration","scope":2438,"src":"15946:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2404,"name":"uint256","nodeType":"ElementaryTypeName","src":"15946:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2407,"mutability":"mutable","name":"e","nameLocation":"15965:1:4","nodeType":"VariableDeclaration","scope":2438,"src":"15957:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2406,"name":"uint256","nodeType":"ElementaryTypeName","src":"15957:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2409,"mutability":"mutable","name":"m","nameLocation":"15976:1:4","nodeType":"VariableDeclaration","scope":2438,"src":"15968:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2408,"name":"uint256","nodeType":"ElementaryTypeName","src":"15968:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15945:33:4"},"returnParameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2438,"src":"16002:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2411,"name":"uint256","nodeType":"ElementaryTypeName","src":"16002:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16001:9:4"},"scope":3252,"src":"15930:255:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2461,"nodeType":"Block","src":"17039:1493:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2452,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2445,"src":"17053:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17058:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17053:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2459,"nodeType":"IfStatement","src":"17049:29:4","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17069:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17076:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17068:10:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2451,"id":2458,"nodeType":"Return","src":"17061:17:4"}},{"AST":{"nativeSrc":"17113:1413:4","nodeType":"YulBlock","src":"17113:1413:4","statements":[{"nativeSrc":"17127:22:4","nodeType":"YulVariableDeclaration","src":"17127:22:4","value":{"arguments":[{"kind":"number","nativeSrc":"17144:4:4","nodeType":"YulLiteral","src":"17144:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17138:5:4","nodeType":"YulIdentifier","src":"17138:5:4"},"nativeSrc":"17138:11:4","nodeType":"YulFunctionCall","src":"17138:11:4"},"variables":[{"name":"ptr","nativeSrc":"17131:3:4","nodeType":"YulTypedName","src":"17131:3:4","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18057:3:4","nodeType":"YulIdentifier","src":"18057:3:4"},{"kind":"number","nativeSrc":"18062:4:4","nodeType":"YulLiteral","src":"18062:4:4","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18050:6:4","nodeType":"YulIdentifier","src":"18050:6:4"},"nativeSrc":"18050:17:4","nodeType":"YulFunctionCall","src":"18050:17:4"},"nativeSrc":"18050:17:4","nodeType":"YulExpressionStatement","src":"18050:17:4"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18091:3:4","nodeType":"YulIdentifier","src":"18091:3:4"},{"kind":"number","nativeSrc":"18096:4:4","nodeType":"YulLiteral","src":"18096:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18087:3:4","nodeType":"YulIdentifier","src":"18087:3:4"},"nativeSrc":"18087:14:4","nodeType":"YulFunctionCall","src":"18087:14:4"},{"kind":"number","nativeSrc":"18103:4:4","nodeType":"YulLiteral","src":"18103:4:4","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18080:6:4","nodeType":"YulIdentifier","src":"18080:6:4"},"nativeSrc":"18080:28:4","nodeType":"YulFunctionCall","src":"18080:28:4"},"nativeSrc":"18080:28:4","nodeType":"YulExpressionStatement","src":"18080:28:4"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18132:3:4","nodeType":"YulIdentifier","src":"18132:3:4"},{"kind":"number","nativeSrc":"18137:4:4","nodeType":"YulLiteral","src":"18137:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18128:3:4","nodeType":"YulIdentifier","src":"18128:3:4"},"nativeSrc":"18128:14:4","nodeType":"YulFunctionCall","src":"18128:14:4"},{"kind":"number","nativeSrc":"18144:4:4","nodeType":"YulLiteral","src":"18144:4:4","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18121:6:4","nodeType":"YulIdentifier","src":"18121:6:4"},"nativeSrc":"18121:28:4","nodeType":"YulFunctionCall","src":"18121:28:4"},"nativeSrc":"18121:28:4","nodeType":"YulExpressionStatement","src":"18121:28:4"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18173:3:4","nodeType":"YulIdentifier","src":"18173:3:4"},{"kind":"number","nativeSrc":"18178:4:4","nodeType":"YulLiteral","src":"18178:4:4","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18169:3:4","nodeType":"YulIdentifier","src":"18169:3:4"},"nativeSrc":"18169:14:4","nodeType":"YulFunctionCall","src":"18169:14:4"},{"name":"b","nativeSrc":"18185:1:4","nodeType":"YulIdentifier","src":"18185:1:4"}],"functionName":{"name":"mstore","nativeSrc":"18162:6:4","nodeType":"YulIdentifier","src":"18162:6:4"},"nativeSrc":"18162:25:4","nodeType":"YulFunctionCall","src":"18162:25:4"},"nativeSrc":"18162:25:4","nodeType":"YulExpressionStatement","src":"18162:25:4"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18211:3:4","nodeType":"YulIdentifier","src":"18211:3:4"},{"kind":"number","nativeSrc":"18216:4:4","nodeType":"YulLiteral","src":"18216:4:4","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18207:3:4","nodeType":"YulIdentifier","src":"18207:3:4"},"nativeSrc":"18207:14:4","nodeType":"YulFunctionCall","src":"18207:14:4"},{"name":"e","nativeSrc":"18223:1:4","nodeType":"YulIdentifier","src":"18223:1:4"}],"functionName":{"name":"mstore","nativeSrc":"18200:6:4","nodeType":"YulIdentifier","src":"18200:6:4"},"nativeSrc":"18200:25:4","nodeType":"YulFunctionCall","src":"18200:25:4"},"nativeSrc":"18200:25:4","nodeType":"YulExpressionStatement","src":"18200:25:4"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18249:3:4","nodeType":"YulIdentifier","src":"18249:3:4"},{"kind":"number","nativeSrc":"18254:4:4","nodeType":"YulLiteral","src":"18254:4:4","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18245:3:4","nodeType":"YulIdentifier","src":"18245:3:4"},"nativeSrc":"18245:14:4","nodeType":"YulFunctionCall","src":"18245:14:4"},{"name":"m","nativeSrc":"18261:1:4","nodeType":"YulIdentifier","src":"18261:1:4"}],"functionName":{"name":"mstore","nativeSrc":"18238:6:4","nodeType":"YulIdentifier","src":"18238:6:4"},"nativeSrc":"18238:25:4","nodeType":"YulFunctionCall","src":"18238:25:4"},"nativeSrc":"18238:25:4","nodeType":"YulExpressionStatement","src":"18238:25:4"},{"nativeSrc":"18425:57:4","nodeType":"YulAssignment","src":"18425:57:4","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18447:3:4","nodeType":"YulIdentifier","src":"18447:3:4"},"nativeSrc":"18447:5:4","nodeType":"YulFunctionCall","src":"18447:5:4"},{"kind":"number","nativeSrc":"18454:4:4","nodeType":"YulLiteral","src":"18454:4:4","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18460:3:4","nodeType":"YulIdentifier","src":"18460:3:4"},{"kind":"number","nativeSrc":"18465:4:4","nodeType":"YulLiteral","src":"18465:4:4","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18471:4:4","nodeType":"YulLiteral","src":"18471:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18477:4:4","nodeType":"YulLiteral","src":"18477:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18436:10:4","nodeType":"YulIdentifier","src":"18436:10:4"},"nativeSrc":"18436:46:4","nodeType":"YulFunctionCall","src":"18436:46:4"},"variableNames":[{"name":"success","nativeSrc":"18425:7:4","nodeType":"YulIdentifier","src":"18425:7:4"}]},{"nativeSrc":"18495:21:4","nodeType":"YulAssignment","src":"18495:21:4","value":{"arguments":[{"kind":"number","nativeSrc":"18511:4:4","nodeType":"YulLiteral","src":"18511:4:4","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18505:5:4","nodeType":"YulIdentifier","src":"18505:5:4"},"nativeSrc":"18505:11:4","nodeType":"YulFunctionCall","src":"18505:11:4"},"variableNames":[{"name":"result","nativeSrc":"18495:6:4","nodeType":"YulIdentifier","src":"18495:6:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2441,"isOffset":false,"isSlot":false,"src":"18185:1:4","valueSize":1},{"declaration":2443,"isOffset":false,"isSlot":false,"src":"18223:1:4","valueSize":1},{"declaration":2445,"isOffset":false,"isSlot":false,"src":"18261:1:4","valueSize":1},{"declaration":2450,"isOffset":false,"isSlot":false,"src":"18495:6:4","valueSize":1},{"declaration":2448,"isOffset":false,"isSlot":false,"src":"18425:7:4","valueSize":1}],"flags":["memory-safe"],"id":2460,"nodeType":"InlineAssembly","src":"17088:1438:4"}]},"documentation":{"id":2439,"nodeType":"StructuredDocumentation","src":"16191:738:4","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":2462,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16943:9:4","nodeType":"FunctionDefinition","parameters":{"id":2446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2441,"mutability":"mutable","name":"b","nameLocation":"16961:1:4","nodeType":"VariableDeclaration","scope":2462,"src":"16953:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"16953:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2443,"mutability":"mutable","name":"e","nameLocation":"16972:1:4","nodeType":"VariableDeclaration","scope":2462,"src":"16964:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2442,"name":"uint256","nodeType":"ElementaryTypeName","src":"16964:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2445,"mutability":"mutable","name":"m","nameLocation":"16983:1:4","nodeType":"VariableDeclaration","scope":2462,"src":"16975:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2444,"name":"uint256","nodeType":"ElementaryTypeName","src":"16975:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16952:33:4"},"returnParameters":{"id":2451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2448,"mutability":"mutable","name":"success","nameLocation":"17014:7:4","nodeType":"VariableDeclaration","scope":2462,"src":"17009:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2447,"name":"bool","nodeType":"ElementaryTypeName","src":"17009:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2450,"mutability":"mutable","name":"result","nameLocation":"17031:6:4","nodeType":"VariableDeclaration","scope":2462,"src":"17023:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2449,"name":"uint256","nodeType":"ElementaryTypeName","src":"17023:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17008:30:4"},"scope":3252,"src":"16934:1598:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2497,"nodeType":"Block","src":"18729:179:4","statements":[{"assignments":[2475,2477],"declarations":[{"constant":false,"id":2475,"mutability":"mutable","name":"success","nameLocation":"18745:7:4","nodeType":"VariableDeclaration","scope":2497,"src":"18740:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2474,"name":"bool","nodeType":"ElementaryTypeName","src":"18740:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2477,"mutability":"mutable","name":"result","nameLocation":"18767:6:4","nodeType":"VariableDeclaration","scope":2497,"src":"18754:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2476,"name":"bytes","nodeType":"ElementaryTypeName","src":"18754:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2483,"initialValue":{"arguments":[{"id":2479,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2465,"src":"18787:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2480,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"18790:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2481,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2469,"src":"18793:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2478,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[2462,2544],"referencedDeclaration":2544,"src":"18777:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":2482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18777:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18739:56:4"},{"condition":{"id":2485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18809:8:4","subExpression":{"id":2484,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2475,"src":"18810:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2494,"nodeType":"IfStatement","src":"18805:74:4","trueBody":{"id":2493,"nodeType":"Block","src":"18819:60:4","statements":[{"expression":{"arguments":[{"expression":{"id":2489,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"18845:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18851:16:4","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":196,"src":"18845:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2486,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"18833:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$229_$","typeString":"type(library Panic)"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18839:5:4","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":228,"src":"18833:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2492,"nodeType":"ExpressionStatement","src":"18833:35:4"}]}},{"expression":{"id":2495,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"18895:6:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2473,"id":2496,"nodeType":"Return","src":"18888:13:4"}]},"documentation":{"id":2463,"nodeType":"StructuredDocumentation","src":"18538:85:4","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":2498,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18637:6:4","nodeType":"FunctionDefinition","parameters":{"id":2470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2465,"mutability":"mutable","name":"b","nameLocation":"18657:1:4","nodeType":"VariableDeclaration","scope":2498,"src":"18644:14:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2464,"name":"bytes","nodeType":"ElementaryTypeName","src":"18644:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2467,"mutability":"mutable","name":"e","nameLocation":"18673:1:4","nodeType":"VariableDeclaration","scope":2498,"src":"18660:14:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2466,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2469,"mutability":"mutable","name":"m","nameLocation":"18689:1:4","nodeType":"VariableDeclaration","scope":2498,"src":"18676:14:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2468,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18643:48:4"},"returnParameters":{"id":2473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2472,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2498,"src":"18715:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2471,"name":"bytes","nodeType":"ElementaryTypeName","src":"18715:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18714:14:4"},"scope":3252,"src":"18628:280:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2543,"nodeType":"Block","src":"19162:771:4","statements":[{"condition":{"arguments":[{"id":2513,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"19187:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2512,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"19176:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19176:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"IfStatement","src":"19172:47:4","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19199:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19216:1:4","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":2517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19206:9:4","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2516,"name":"bytes","nodeType":"ElementaryTypeName","src":"19210:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19206:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2520,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19198:21:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":2511,"id":2521,"nodeType":"Return","src":"19191:28:4"}},{"assignments":[2524],"declarations":[{"constant":false,"id":2524,"mutability":"mutable","name":"mLen","nameLocation":"19238:4:4","nodeType":"VariableDeclaration","scope":2543,"src":"19230:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2523,"name":"uint256","nodeType":"ElementaryTypeName","src":"19230:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2527,"initialValue":{"expression":{"id":2525,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"19245:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19247:6:4","memberName":"length","nodeType":"MemberAccess","src":"19245:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19230:23:4"},{"expression":{"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2528,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2510,"src":"19335:6:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2531,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"19361:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19363:6:4","memberName":"length","nodeType":"MemberAccess","src":"19361:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2533,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"19371:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19373:6:4","memberName":"length","nodeType":"MemberAccess","src":"19371:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2535,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2524,"src":"19381:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2536,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"19387:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2537,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"19390:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2538,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"19393:1:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2529,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19344:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19348:12:4","memberName":"encodePacked","nodeType":"MemberAccess","src":"19344:16:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19335:60:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2541,"nodeType":"ExpressionStatement","src":"19335:60:4"},{"AST":{"nativeSrc":"19431:496:4","nodeType":"YulBlock","src":"19431:496:4","statements":[{"nativeSrc":"19445:32:4","nodeType":"YulVariableDeclaration","src":"19445:32:4","value":{"arguments":[{"name":"result","nativeSrc":"19464:6:4","nodeType":"YulIdentifier","src":"19464:6:4"},{"kind":"number","nativeSrc":"19472:4:4","nodeType":"YulLiteral","src":"19472:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19460:3:4","nodeType":"YulIdentifier","src":"19460:3:4"},"nativeSrc":"19460:17:4","nodeType":"YulFunctionCall","src":"19460:17:4"},"variables":[{"name":"dataPtr","nativeSrc":"19449:7:4","nodeType":"YulTypedName","src":"19449:7:4","type":""}]},{"nativeSrc":"19567:73:4","nodeType":"YulAssignment","src":"19567:73:4","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19589:3:4","nodeType":"YulIdentifier","src":"19589:3:4"},"nativeSrc":"19589:5:4","nodeType":"YulFunctionCall","src":"19589:5:4"},{"kind":"number","nativeSrc":"19596:4:4","nodeType":"YulLiteral","src":"19596:4:4","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19602:7:4","nodeType":"YulIdentifier","src":"19602:7:4"},{"arguments":[{"name":"result","nativeSrc":"19617:6:4","nodeType":"YulIdentifier","src":"19617:6:4"}],"functionName":{"name":"mload","nativeSrc":"19611:5:4","nodeType":"YulIdentifier","src":"19611:5:4"},"nativeSrc":"19611:13:4","nodeType":"YulFunctionCall","src":"19611:13:4"},{"name":"dataPtr","nativeSrc":"19626:7:4","nodeType":"YulIdentifier","src":"19626:7:4"},{"name":"mLen","nativeSrc":"19635:4:4","nodeType":"YulIdentifier","src":"19635:4:4"}],"functionName":{"name":"staticcall","nativeSrc":"19578:10:4","nodeType":"YulIdentifier","src":"19578:10:4"},"nativeSrc":"19578:62:4","nodeType":"YulFunctionCall","src":"19578:62:4"},"variableNames":[{"name":"success","nativeSrc":"19567:7:4","nodeType":"YulIdentifier","src":"19567:7:4"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19796:6:4","nodeType":"YulIdentifier","src":"19796:6:4"},{"name":"mLen","nativeSrc":"19804:4:4","nodeType":"YulIdentifier","src":"19804:4:4"}],"functionName":{"name":"mstore","nativeSrc":"19789:6:4","nodeType":"YulIdentifier","src":"19789:6:4"},"nativeSrc":"19789:20:4","nodeType":"YulFunctionCall","src":"19789:20:4"},"nativeSrc":"19789:20:4","nodeType":"YulExpressionStatement","src":"19789:20:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19892:4:4","nodeType":"YulLiteral","src":"19892:4:4","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19902:7:4","nodeType":"YulIdentifier","src":"19902:7:4"},{"name":"mLen","nativeSrc":"19911:4:4","nodeType":"YulIdentifier","src":"19911:4:4"}],"functionName":{"name":"add","nativeSrc":"19898:3:4","nodeType":"YulIdentifier","src":"19898:3:4"},"nativeSrc":"19898:18:4","nodeType":"YulFunctionCall","src":"19898:18:4"}],"functionName":{"name":"mstore","nativeSrc":"19885:6:4","nodeType":"YulIdentifier","src":"19885:6:4"},"nativeSrc":"19885:32:4","nodeType":"YulFunctionCall","src":"19885:32:4"},"nativeSrc":"19885:32:4","nodeType":"YulExpressionStatement","src":"19885:32:4"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2524,"isOffset":false,"isSlot":false,"src":"19635:4:4","valueSize":1},{"declaration":2524,"isOffset":false,"isSlot":false,"src":"19804:4:4","valueSize":1},{"declaration":2524,"isOffset":false,"isSlot":false,"src":"19911:4:4","valueSize":1},{"declaration":2510,"isOffset":false,"isSlot":false,"src":"19464:6:4","valueSize":1},{"declaration":2510,"isOffset":false,"isSlot":false,"src":"19617:6:4","valueSize":1},{"declaration":2510,"isOffset":false,"isSlot":false,"src":"19796:6:4","valueSize":1},{"declaration":2508,"isOffset":false,"isSlot":false,"src":"19567:7:4","valueSize":1}],"flags":["memory-safe"],"id":2542,"nodeType":"InlineAssembly","src":"19406:521:4"}]},"documentation":{"id":2499,"nodeType":"StructuredDocumentation","src":"18914:88:4","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":2544,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19016:9:4","nodeType":"FunctionDefinition","parameters":{"id":2506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2501,"mutability":"mutable","name":"b","nameLocation":"19048:1:4","nodeType":"VariableDeclaration","scope":2544,"src":"19035:14:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2500,"name":"bytes","nodeType":"ElementaryTypeName","src":"19035:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2503,"mutability":"mutable","name":"e","nameLocation":"19072:1:4","nodeType":"VariableDeclaration","scope":2544,"src":"19059:14:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2502,"name":"bytes","nodeType":"ElementaryTypeName","src":"19059:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2505,"mutability":"mutable","name":"m","nameLocation":"19096:1:4","nodeType":"VariableDeclaration","scope":2544,"src":"19083:14:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2504,"name":"bytes","nodeType":"ElementaryTypeName","src":"19083:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19025:78:4"},"returnParameters":{"id":2511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2508,"mutability":"mutable","name":"success","nameLocation":"19132:7:4","nodeType":"VariableDeclaration","scope":2544,"src":"19127:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2507,"name":"bool","nodeType":"ElementaryTypeName","src":"19127:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2510,"mutability":"mutable","name":"result","nameLocation":"19154:6:4","nodeType":"VariableDeclaration","scope":2544,"src":"19141:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2509,"name":"bytes","nodeType":"ElementaryTypeName","src":"19141:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19126:35:4"},"scope":3252,"src":"19007:926:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2576,"nodeType":"Block","src":"20088:176:4","statements":[{"body":{"id":2572,"nodeType":"Block","src":"20145:92:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2563,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"20163:9:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2565,"indexExpression":{"id":2564,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"20173:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20163:12:4","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20179:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20163:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2571,"nodeType":"IfStatement","src":"20159:68:4","trueBody":{"id":2570,"nodeType":"Block","src":"20182:45:4","statements":[{"expression":{"hexValue":"66616c7365","id":2568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20207:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2551,"id":2569,"nodeType":"Return","src":"20200:12:4"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2556,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"20118:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2557,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"20122:9:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20132:6:4","memberName":"length","nodeType":"MemberAccess","src":"20122:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20118:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2573,"initializationExpression":{"assignments":[2553],"declarations":[{"constant":false,"id":2553,"mutability":"mutable","name":"i","nameLocation":"20111:1:4","nodeType":"VariableDeclaration","scope":2573,"src":"20103:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2552,"name":"uint256","nodeType":"ElementaryTypeName","src":"20103:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2555,"initialValue":{"hexValue":"30","id":2554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20115:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20103:13:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20140:3:4","subExpression":{"id":2560,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"20142:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2562,"nodeType":"ExpressionStatement","src":"20140:3:4"},"nodeType":"ForStatement","src":"20098:139:4"},{"expression":{"hexValue":"74727565","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20253:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2551,"id":2575,"nodeType":"Return","src":"20246:11:4"}]},"documentation":{"id":2545,"nodeType":"StructuredDocumentation","src":"19939:72:4","text":" @dev Returns whether the provided byte array is zero."},"id":2577,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20025:10:4","nodeType":"FunctionDefinition","parameters":{"id":2548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2547,"mutability":"mutable","name":"byteArray","nameLocation":"20049:9:4","nodeType":"VariableDeclaration","scope":2577,"src":"20036:22:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2546,"name":"bytes","nodeType":"ElementaryTypeName","src":"20036:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20035:24:4"},"returnParameters":{"id":2551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2550,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2577,"src":"20082:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2549,"name":"bool","nodeType":"ElementaryTypeName","src":"20082:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20081:6:4"},"scope":3252,"src":"20016:248:4","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2795,"nodeType":"Block","src":"20624:5124:4","statements":[{"id":2794,"nodeType":"UncheckedBlock","src":"20634:5108:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2585,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"20728:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20733:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20728:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2591,"nodeType":"IfStatement","src":"20724:53:4","trueBody":{"id":2590,"nodeType":"Block","src":"20736:41:4","statements":[{"expression":{"id":2588,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"20761:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2584,"id":2589,"nodeType":"Return","src":"20754:8:4"}]}},{"assignments":[2593],"declarations":[{"constant":false,"id":2593,"mutability":"mutable","name":"aa","nameLocation":"21712:2:4","nodeType":"VariableDeclaration","scope":2794,"src":"21704:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2592,"name":"uint256","nodeType":"ElementaryTypeName","src":"21704:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2595,"initialValue":{"id":2594,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"21717:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21704:14:4"},{"assignments":[2597],"declarations":[{"constant":false,"id":2597,"mutability":"mutable","name":"xn","nameLocation":"21740:2:4","nodeType":"VariableDeclaration","scope":2794,"src":"21732:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2596,"name":"uint256","nodeType":"ElementaryTypeName","src":"21732:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2599,"initialValue":{"hexValue":"31","id":2598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21745:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21732:14:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2600,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"21765:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":2603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21772:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":2602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21777:3:4","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21772:8:4","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":2604,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21771:10:4","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21765:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2615,"nodeType":"IfStatement","src":"21761:92:4","trueBody":{"id":2614,"nodeType":"Block","src":"21783:70:4","statements":[{"expression":{"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2606,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"21801:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21808:3:4","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21801:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2609,"nodeType":"ExpressionStatement","src":"21801:10:4"},{"expression":{"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2610,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"21829:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21836:2:4","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21829:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2613,"nodeType":"ExpressionStatement","src":"21829:9:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2616,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"21870:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":2619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21877:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":2618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:4","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21877:7:4","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":2620,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21876:9:4","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21870:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2631,"nodeType":"IfStatement","src":"21866:90:4","trueBody":{"id":2630,"nodeType":"Block","src":"21887:69:4","statements":[{"expression":{"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2622,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"21905:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21912:2:4","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21905:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2625,"nodeType":"ExpressionStatement","src":"21905:9:4"},{"expression":{"id":2628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2626,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"21932:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":2627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21939:2:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21932:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2629,"nodeType":"ExpressionStatement","src":"21932:9:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"21973:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":2635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21980:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":2634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21985:2:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21980:7:4","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":2636,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21979:9:4","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21973:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2647,"nodeType":"IfStatement","src":"21969:90:4","trueBody":{"id":2646,"nodeType":"Block","src":"21990:69:4","statements":[{"expression":{"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2638,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22008:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22015:2:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22008:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2641,"nodeType":"ExpressionStatement","src":"22008:9:4"},{"expression":{"id":2644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2642,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"22035:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":2643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22042:2:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22035:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2645,"nodeType":"ExpressionStatement","src":"22035:9:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2648,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22076:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":2651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22083:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":2650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22088:2:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22083:7:4","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":2652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22082:9:4","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22076:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2663,"nodeType":"IfStatement","src":"22072:89:4","trueBody":{"id":2662,"nodeType":"Block","src":"22093:68:4","statements":[{"expression":{"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2654,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22111:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22118:2:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22111:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2657,"nodeType":"ExpressionStatement","src":"22111:9:4"},{"expression":{"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2658,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"22138:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":2659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22145:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22138:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2661,"nodeType":"ExpressionStatement","src":"22138:8:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2664,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22178:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":2667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22185:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":2666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22190:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22185:6:4","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":2668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22184:8:4","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22178:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2679,"nodeType":"IfStatement","src":"22174:87:4","trueBody":{"id":2678,"nodeType":"Block","src":"22194:67:4","statements":[{"expression":{"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2670,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22212:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22219:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22212:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2673,"nodeType":"ExpressionStatement","src":"22212:8:4"},{"expression":{"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2674,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"22238:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":2675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22245:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22238:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2677,"nodeType":"ExpressionStatement","src":"22238:8:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2680,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22278:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":2683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22285:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":2682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22290:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22285:6:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":2684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22284:8:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22278:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2695,"nodeType":"IfStatement","src":"22274:87:4","trueBody":{"id":2694,"nodeType":"Block","src":"22294:67:4","statements":[{"expression":{"id":2688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2686,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22312:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22319:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22312:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2689,"nodeType":"ExpressionStatement","src":"22312:8:4"},{"expression":{"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2690,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"22338:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":2691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22345:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22338:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2693,"nodeType":"ExpressionStatement","src":"22338:8:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2696,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"22378:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":2699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22385:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22390:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22385:6:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":2700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22384:8:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22378:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2707,"nodeType":"IfStatement","src":"22374:61:4","trueBody":{"id":2706,"nodeType":"Block","src":"22394:41:4","statements":[{"expression":{"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2702,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"22412:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22419:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22412:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2705,"nodeType":"ExpressionStatement","src":"22412:8:4"}]}},{"expression":{"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2708,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"22855:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22861:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2710,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"22865:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22861:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22860:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22872:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22860:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22855:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2716,"nodeType":"ExpressionStatement","src":"22855:18:4"},{"expression":{"id":2726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2717,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24760:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24766:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2719,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"24771:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2720,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24775:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24771:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24766:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2723,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24765:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24782:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24765:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24760:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2727,"nodeType":"ExpressionStatement","src":"24760:23:4"},{"expression":{"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2728,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24869:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2729,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24875:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2730,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"24880:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2731,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24884:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24880:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24875:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24874:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24874:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24869:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2738,"nodeType":"ExpressionStatement","src":"24869:23:4"},{"expression":{"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2739,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24980:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2740,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24986:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2741,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"24991:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2742,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"24995:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24991:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24986:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24985:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25002:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24985:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24980:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2749,"nodeType":"ExpressionStatement","src":"24980:23:4"},{"expression":{"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2750,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25089:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2751,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25095:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2752,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"25100:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2753,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25104:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25100:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25095:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2756,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25094:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25094:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25089:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2760,"nodeType":"ExpressionStatement","src":"25089:23:4"},{"expression":{"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2761,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25199:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2762,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25205:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2763,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"25210:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2764,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25214:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25210:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25205:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25204:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25221:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25204:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25199:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2771,"nodeType":"ExpressionStatement","src":"25199:23:4"},{"expression":{"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2772,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25309:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2773,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25315:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"25320:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2775,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25324:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25320:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25315:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25314:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25331:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25314:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25309:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2782,"nodeType":"ExpressionStatement","src":"25309:23:4"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2783,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25698:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2786,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25719:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2787,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"25724:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2788,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"25728:2:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25724:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25719:11:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2784,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"25703:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25712:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"25703:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25703:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25698:33:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2584,"id":2793,"nodeType":"Return","src":"25691:40:4"}]}]},"documentation":{"id":2578,"nodeType":"StructuredDocumentation","src":"20270:292:4","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":2796,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20576:4:4","nodeType":"FunctionDefinition","parameters":{"id":2581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2580,"mutability":"mutable","name":"a","nameLocation":"20589:1:4","nodeType":"VariableDeclaration","scope":2796,"src":"20581:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2579,"name":"uint256","nodeType":"ElementaryTypeName","src":"20581:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20580:11:4"},"returnParameters":{"id":2584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2796,"src":"20615:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2582,"name":"uint256","nodeType":"ElementaryTypeName","src":"20615:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20614:9:4"},"scope":3252,"src":"20567:5181:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2829,"nodeType":"Block","src":"25921:171:4","statements":[{"id":2828,"nodeType":"UncheckedBlock","src":"25931:155:4","statements":[{"assignments":[2808],"declarations":[{"constant":false,"id":2808,"mutability":"mutable","name":"result","nameLocation":"25963:6:4","nodeType":"VariableDeclaration","scope":2828,"src":"25955:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2807,"name":"uint256","nodeType":"ElementaryTypeName","src":"25955:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2812,"initialValue":{"arguments":[{"id":2810,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2799,"src":"25977:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2809,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2796,2830],"referencedDeclaration":2796,"src":"25972:4:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25972:7:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25955:24:4"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2813,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2808,"src":"26000:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2817,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2802,"src":"26042:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}],"id":2816,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"26025:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2819,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2808,"src":"26055:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2820,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2808,"src":"26064:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2799,"src":"26073:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26025:49:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2814,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"26009:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26018:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"26009:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26009:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26000:75:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2806,"id":2827,"nodeType":"Return","src":"25993:82:4"}]}]},"documentation":{"id":2797,"nodeType":"StructuredDocumentation","src":"25754:86:4","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":2830,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25854:4:4","nodeType":"FunctionDefinition","parameters":{"id":2803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2799,"mutability":"mutable","name":"a","nameLocation":"25867:1:4","nodeType":"VariableDeclaration","scope":2830,"src":"25859:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2798,"name":"uint256","nodeType":"ElementaryTypeName","src":"25859:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2802,"mutability":"mutable","name":"rounding","nameLocation":"25879:8:4","nodeType":"VariableDeclaration","scope":2830,"src":"25870:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"},"typeName":{"id":2801,"nodeType":"UserDefinedTypeName","pathNode":{"id":2800,"name":"Rounding","nameLocations":["25870:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"25870:8:4"},"referencedDeclaration":1643,"src":"25870:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25858:30:4"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2805,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2830,"src":"25912:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2804,"name":"uint256","nodeType":"ElementaryTypeName","src":"25912:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25911:9:4"},"scope":3252,"src":"25845:247:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2920,"nodeType":"Block","src":"26281:2334:4","statements":[{"expression":{"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2838,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26363:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2841,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"26383:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":2842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26387:34:4","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26383:38:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2839,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"26367:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26376:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"26367:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26367:55:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":2845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26426:1:4","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26367:60:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26363:64:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2848,"nodeType":"ExpressionStatement","src":"26363:64:4"},{"expression":{"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2849,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26503:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2852,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"26525:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2853,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26530:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26525:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2855,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26524:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":2856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26535:18:4","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26524:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2850,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"26508:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26517:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"26508:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26508:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":2859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26558:1:4","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26508:51:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26503:56:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2862,"nodeType":"ExpressionStatement","src":"26503:56:4"},{"expression":{"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2863,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26634:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2866,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"26656:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2867,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26661:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26656:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2869,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26655:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26666:10:4","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26655:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2864,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"26639:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26648:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"26639:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26639:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":2873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26681:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26639:43:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26634:48:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2876,"nodeType":"ExpressionStatement","src":"26634:48:4"},{"expression":{"id":2889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2877,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26757:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2880,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"26779:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2881,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26784:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26779:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26778:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":2884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26789:6:4","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26778:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2878,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"26762:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26771:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"26762:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26762:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":2887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26800:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26762:39:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26757:44:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2890,"nodeType":"ExpressionStatement","src":"26757:44:4"},{"expression":{"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2891,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26874:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2894,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"26896:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2895,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26901:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26896:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2897,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26895:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":2898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26906:4:4","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26895:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2892,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"26879:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26888:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"26879:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26879:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26915:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26879:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26874:42:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2904,"nodeType":"ExpressionStatement","src":"26874:42:4"},{"expression":{"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2905,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"26988:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2908,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"27010:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2909,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"27015:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27010:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2911,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27009:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":2912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27020:3:4","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27009:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2906,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"26993:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27002:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"26993:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26993:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27028:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26993:36:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26988:41:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2918,"nodeType":"ExpressionStatement","src":"26988:41:4"},{"AST":{"nativeSrc":"28490:119:4","nodeType":"YulBlock","src":"28490:119:4","statements":[{"nativeSrc":"28504:95:4","nodeType":"YulAssignment","src":"28504:95:4","value":{"arguments":[{"name":"r","nativeSrc":"28512:1:4","nodeType":"YulIdentifier","src":"28512:1:4"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28524:1:4","nodeType":"YulIdentifier","src":"28524:1:4"},{"name":"x","nativeSrc":"28527:1:4","nodeType":"YulIdentifier","src":"28527:1:4"}],"functionName":{"name":"shr","nativeSrc":"28520:3:4","nodeType":"YulIdentifier","src":"28520:3:4"},"nativeSrc":"28520:9:4","nodeType":"YulFunctionCall","src":"28520:9:4"},{"kind":"number","nativeSrc":"28531:66:4","nodeType":"YulLiteral","src":"28531:66:4","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28515:4:4","nodeType":"YulIdentifier","src":"28515:4:4"},"nativeSrc":"28515:83:4","nodeType":"YulFunctionCall","src":"28515:83:4"}],"functionName":{"name":"or","nativeSrc":"28509:2:4","nodeType":"YulIdentifier","src":"28509:2:4"},"nativeSrc":"28509:90:4","nodeType":"YulFunctionCall","src":"28509:90:4"},"variableNames":[{"name":"r","nativeSrc":"28504:1:4","nodeType":"YulIdentifier","src":"28504:1:4"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2836,"isOffset":false,"isSlot":false,"src":"28504:1:4","valueSize":1},{"declaration":2836,"isOffset":false,"isSlot":false,"src":"28512:1:4","valueSize":1},{"declaration":2836,"isOffset":false,"isSlot":false,"src":"28524:1:4","valueSize":1},{"declaration":2833,"isOffset":false,"isSlot":false,"src":"28527:1:4","valueSize":1}],"flags":["memory-safe"],"id":2919,"nodeType":"InlineAssembly","src":"28465:144:4"}]},"documentation":{"id":2831,"nodeType":"StructuredDocumentation","src":"26098:119:4","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":2921,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26231:4:4","nodeType":"FunctionDefinition","parameters":{"id":2834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2833,"mutability":"mutable","name":"x","nameLocation":"26244:1:4","nodeType":"VariableDeclaration","scope":2921,"src":"26236:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2832,"name":"uint256","nodeType":"ElementaryTypeName","src":"26236:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26235:11:4"},"returnParameters":{"id":2837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2836,"mutability":"mutable","name":"r","nameLocation":"26278:1:4","nodeType":"VariableDeclaration","scope":2921,"src":"26270:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2835,"name":"uint256","nodeType":"ElementaryTypeName","src":"26270:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26269:11:4"},"scope":3252,"src":"26222:2393:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2954,"nodeType":"Block","src":"28848:175:4","statements":[{"id":2953,"nodeType":"UncheckedBlock","src":"28858:159:4","statements":[{"assignments":[2933],"declarations":[{"constant":false,"id":2933,"mutability":"mutable","name":"result","nameLocation":"28890:6:4","nodeType":"VariableDeclaration","scope":2953,"src":"28882:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2932,"name":"uint256","nodeType":"ElementaryTypeName","src":"28882:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2937,"initialValue":{"arguments":[{"id":2935,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2924,"src":"28904:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2934,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2921,2955],"referencedDeclaration":2921,"src":"28899:4:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28899:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28882:28:4"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2938,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"28931:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2942,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2927,"src":"28973:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}],"id":2941,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"28956:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28986:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2945,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"28991:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2924,"src":"29000:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28956:49:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2939,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"28940:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28949:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"28940:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28940:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28931:75:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2931,"id":2952,"nodeType":"Return","src":"28924:82:4"}]}]},"documentation":{"id":2922,"nodeType":"StructuredDocumentation","src":"28621:142:4","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2955,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28777:4:4","nodeType":"FunctionDefinition","parameters":{"id":2928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2924,"mutability":"mutable","name":"value","nameLocation":"28790:5:4","nodeType":"VariableDeclaration","scope":2955,"src":"28782:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2923,"name":"uint256","nodeType":"ElementaryTypeName","src":"28782:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2927,"mutability":"mutable","name":"rounding","nameLocation":"28806:8:4","nodeType":"VariableDeclaration","scope":2955,"src":"28797:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"},"typeName":{"id":2926,"nodeType":"UserDefinedTypeName","pathNode":{"id":2925,"name":"Rounding","nameLocations":["28797:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"28797:8:4"},"referencedDeclaration":1643,"src":"28797:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28781:34:4"},"returnParameters":{"id":2931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2955,"src":"28839:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2929,"name":"uint256","nodeType":"ElementaryTypeName","src":"28839:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28838:9:4"},"scope":3252,"src":"28768:255:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3083,"nodeType":"Block","src":"29216:854:4","statements":[{"assignments":[2964],"declarations":[{"constant":false,"id":2964,"mutability":"mutable","name":"result","nameLocation":"29234:6:4","nodeType":"VariableDeclaration","scope":3083,"src":"29226:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2963,"name":"uint256","nodeType":"ElementaryTypeName","src":"29226:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2966,"initialValue":{"hexValue":"30","id":2965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29243:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29226:18:4"},{"id":3080,"nodeType":"UncheckedBlock","src":"29254:787:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29282:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29291:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29297:2:4","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29291:8:4","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29282:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2983,"nodeType":"IfStatement","src":"29278:103:4","trueBody":{"id":2982,"nodeType":"Block","src":"29301:80:4","statements":[{"expression":{"id":2976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29319:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29328:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29334:2:4","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29328:8:4","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29319:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2977,"nodeType":"ExpressionStatement","src":"29319:17:4"},{"expression":{"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2978,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"29354:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29364:2:4","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29354:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2981,"nodeType":"ExpressionStatement","src":"29354:12:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2984,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29398:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29407:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29413:2:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29407:8:4","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29398:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3000,"nodeType":"IfStatement","src":"29394:103:4","trueBody":{"id":2999,"nodeType":"Block","src":"29417:80:4","statements":[{"expression":{"id":2993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2989,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29435:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29444:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29450:2:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29444:8:4","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29435:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2994,"nodeType":"ExpressionStatement","src":"29435:17:4"},{"expression":{"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2995,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"29470:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29480:2:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29470:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2998,"nodeType":"ExpressionStatement","src":"29470:12:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29514:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29523:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29529:2:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29523:8:4","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29514:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3017,"nodeType":"IfStatement","src":"29510:103:4","trueBody":{"id":3016,"nodeType":"Block","src":"29533:80:4","statements":[{"expression":{"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29551:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29566:2:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29560:8:4","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29551:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3011,"nodeType":"ExpressionStatement","src":"29551:17:4"},{"expression":{"id":3014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3012,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"29586:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29596:2:4","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29586:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3015,"nodeType":"ExpressionStatement","src":"29586:12:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29630:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29639:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29639:7:4","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29630:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3034,"nodeType":"IfStatement","src":"29626:100:4","trueBody":{"id":3033,"nodeType":"Block","src":"29648:78:4","statements":[{"expression":{"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29666:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29675:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29675:7:4","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29666:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3028,"nodeType":"ExpressionStatement","src":"29666:16:4"},{"expression":{"id":3031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3029,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"29700:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29710:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29700:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3032,"nodeType":"ExpressionStatement","src":"29700:11:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29743:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29752:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29758:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29752:7:4","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29743:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3051,"nodeType":"IfStatement","src":"29739:100:4","trueBody":{"id":3050,"nodeType":"Block","src":"29761:78:4","statements":[{"expression":{"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3040,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29779:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29788:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29794:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29788:7:4","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29779:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3045,"nodeType":"ExpressionStatement","src":"29779:16:4"},{"expression":{"id":3048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3046,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"29813:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29823:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29813:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3049,"nodeType":"ExpressionStatement","src":"29813:11:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29856:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29865:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29871:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29865:7:4","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29856:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3068,"nodeType":"IfStatement","src":"29852:100:4","trueBody":{"id":3067,"nodeType":"Block","src":"29874:78:4","statements":[{"expression":{"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3057,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29892:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29901:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29907:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29901:7:4","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29892:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3062,"nodeType":"ExpressionStatement","src":"29892:16:4"},{"expression":{"id":3065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"29926:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29936:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29926:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3066,"nodeType":"ExpressionStatement","src":"29926:11:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"29969:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":3072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29978:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":3071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29984:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29978:7:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29969:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3079,"nodeType":"IfStatement","src":"29965:66:4","trueBody":{"id":3078,"nodeType":"Block","src":"29987:44:4","statements":[{"expression":{"id":3076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"30005:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30015:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30005:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3077,"nodeType":"ExpressionStatement","src":"30005:11:4"}]}}]},{"expression":{"id":3081,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"30057:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2962,"id":3082,"nodeType":"Return","src":"30050:13:4"}]},"documentation":{"id":2956,"nodeType":"StructuredDocumentation","src":"29029:120:4","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":3084,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29163:5:4","nodeType":"FunctionDefinition","parameters":{"id":2959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2958,"mutability":"mutable","name":"value","nameLocation":"29177:5:4","nodeType":"VariableDeclaration","scope":3084,"src":"29169:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2957,"name":"uint256","nodeType":"ElementaryTypeName","src":"29169:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29168:15:4"},"returnParameters":{"id":2962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3084,"src":"29207:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2960,"name":"uint256","nodeType":"ElementaryTypeName","src":"29207:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29206:9:4"},"scope":3252,"src":"29154:916:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3117,"nodeType":"Block","src":"30305:177:4","statements":[{"id":3116,"nodeType":"UncheckedBlock","src":"30315:161:4","statements":[{"assignments":[3096],"declarations":[{"constant":false,"id":3096,"mutability":"mutable","name":"result","nameLocation":"30347:6:4","nodeType":"VariableDeclaration","scope":3116,"src":"30339:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3095,"name":"uint256","nodeType":"ElementaryTypeName","src":"30339:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3100,"initialValue":{"arguments":[{"id":3098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"30362:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3097,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[3084,3118],"referencedDeclaration":3084,"src":"30356:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30356:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30339:29:4"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3101,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3096,"src":"30389:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3105,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3090,"src":"30431:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}],"id":3104,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"30414:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30444:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":3108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3096,"src":"30450:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3110,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"30459:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30414:50:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3102,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"30398:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":3103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30407:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"30398:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30398:67:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30389:76:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3094,"id":3115,"nodeType":"Return","src":"30382:83:4"}]}]},"documentation":{"id":3085,"nodeType":"StructuredDocumentation","src":"30076:143:4","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3118,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30233:5:4","nodeType":"FunctionDefinition","parameters":{"id":3091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3087,"mutability":"mutable","name":"value","nameLocation":"30247:5:4","nodeType":"VariableDeclaration","scope":3118,"src":"30239:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3086,"name":"uint256","nodeType":"ElementaryTypeName","src":"30239:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3090,"mutability":"mutable","name":"rounding","nameLocation":"30263:8:4","nodeType":"VariableDeclaration","scope":3118,"src":"30254:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"},"typeName":{"id":3089,"nodeType":"UserDefinedTypeName","pathNode":{"id":3088,"name":"Rounding","nameLocations":["30254:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"30254:8:4"},"referencedDeclaration":1643,"src":"30254:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30238:34:4"},"returnParameters":{"id":3094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3093,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3118,"src":"30296:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3092,"name":"uint256","nodeType":"ElementaryTypeName","src":"30296:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30295:9:4"},"scope":3252,"src":"30224:258:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3194,"nodeType":"Block","src":"30800:675:4","statements":[{"expression":{"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3126,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"30882:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3129,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3121,"src":"30902:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":3130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30906:34:4","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30902:38:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3127,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"30886:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30895:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"30886:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30886:55:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":3133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30945:1:4","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30886:60:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30882:64:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3136,"nodeType":"ExpressionStatement","src":"30882:64:4"},{"expression":{"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3137,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31022:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3140,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3121,"src":"31044:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":3141,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31049:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31044:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31043:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":3144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31054:18:4","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31043:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3138,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31027:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31036:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"31027:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31027:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":3147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31077:1:4","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31027:51:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31022:56:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3150,"nodeType":"ExpressionStatement","src":"31022:56:4"},{"expression":{"id":3163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3151,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31153:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3154,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3121,"src":"31175:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":3155,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31180:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31175:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31174:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":3158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31185:10:4","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31174:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3152,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31158:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31167:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"31158:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31158:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":3161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31200:1:4","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31158:43:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31153:48:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3164,"nodeType":"ExpressionStatement","src":"31153:48:4"},{"expression":{"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3165,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31276:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3168,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3121,"src":"31298:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":3169,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31303:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31298:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3171,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31297:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":3172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31308:6:4","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31297:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3166,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31281:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31290:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"31281:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31281:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":3175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31281:39:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31276:44:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3178,"nodeType":"ExpressionStatement","src":"31276:44:4"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3179,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31426:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":3180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31431:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31426:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3182,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31425:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3185,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3121,"src":"31453:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":3186,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"31458:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31453:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3188,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31452:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":3189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31463:4:4","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31452:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3183,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31436:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31445:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"31436:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31436:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31425:43:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3125,"id":3193,"nodeType":"Return","src":"31418:50:4"}]},"documentation":{"id":3119,"nodeType":"StructuredDocumentation","src":"30488:246:4","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":3195,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30748:6:4","nodeType":"FunctionDefinition","parameters":{"id":3122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3121,"mutability":"mutable","name":"x","nameLocation":"30763:1:4","nodeType":"VariableDeclaration","scope":3195,"src":"30755:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3120,"name":"uint256","nodeType":"ElementaryTypeName","src":"30755:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30754:11:4"},"returnParameters":{"id":3125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"r","nameLocation":"30797:1:4","nodeType":"VariableDeclaration","scope":3195,"src":"30789:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3123,"name":"uint256","nodeType":"ElementaryTypeName","src":"30789:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30788:11:4"},"scope":3252,"src":"30739:736:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3231,"nodeType":"Block","src":"31712:184:4","statements":[{"id":3230,"nodeType":"UncheckedBlock","src":"31722:168:4","statements":[{"assignments":[3207],"declarations":[{"constant":false,"id":3207,"mutability":"mutable","name":"result","nameLocation":"31754:6:4","nodeType":"VariableDeclaration","scope":3230,"src":"31746:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3206,"name":"uint256","nodeType":"ElementaryTypeName","src":"31746:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3211,"initialValue":{"arguments":[{"id":3209,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3198,"src":"31770:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3208,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[3195,3232],"referencedDeclaration":3195,"src":"31763:6:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31763:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31746:30:4"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3212,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"31797:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3216,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"31839:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}],"id":3215,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"31822:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31852:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3219,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"31858:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":3220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31858:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3222,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31857:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3198,"src":"31873:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31822:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3213,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31806:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":3214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31815:6:4","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"31806:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31806:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31797:82:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3205,"id":3229,"nodeType":"Return","src":"31790:89:4"}]}]},"documentation":{"id":3196,"nodeType":"StructuredDocumentation","src":"31481:144:4","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3232,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31639:6:4","nodeType":"FunctionDefinition","parameters":{"id":3202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3198,"mutability":"mutable","name":"value","nameLocation":"31654:5:4","nodeType":"VariableDeclaration","scope":3232,"src":"31646:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3197,"name":"uint256","nodeType":"ElementaryTypeName","src":"31646:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3201,"mutability":"mutable","name":"rounding","nameLocation":"31670:8:4","nodeType":"VariableDeclaration","scope":3232,"src":"31661:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"},"typeName":{"id":3200,"nodeType":"UserDefinedTypeName","pathNode":{"id":3199,"name":"Rounding","nameLocations":["31661:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"31661:8:4"},"referencedDeclaration":1643,"src":"31661:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31645:34:4"},"returnParameters":{"id":3205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3232,"src":"31703:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3203,"name":"uint256","nodeType":"ElementaryTypeName","src":"31703:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31702:9:4"},"scope":3252,"src":"31630:266:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3250,"nodeType":"Block","src":"32094:48:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3243,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"32117:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}],"id":3242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32111:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3241,"name":"uint8","nodeType":"ElementaryTypeName","src":"32111:5:4","typeDescriptions":{}}},"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32111:15:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":3245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32129:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32111:19:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32134:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32111:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3240,"id":3249,"nodeType":"Return","src":"32104:31:4"}]},"documentation":{"id":3233,"nodeType":"StructuredDocumentation","src":"31902:113:4","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":3251,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32029:16:4","nodeType":"FunctionDefinition","parameters":{"id":3237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3236,"mutability":"mutable","name":"rounding","nameLocation":"32055:8:4","nodeType":"VariableDeclaration","scope":3251,"src":"32046:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"},"typeName":{"id":3235,"nodeType":"UserDefinedTypeName","pathNode":{"id":3234,"name":"Rounding","nameLocations":["32046:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"32046:8:4"},"referencedDeclaration":1643,"src":"32046:8:4","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32045:19:4"},"returnParameters":{"id":3240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3251,"src":"32088:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3238,"name":"bool","nodeType":"ElementaryTypeName","src":"32088:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32087:6:4"},"scope":3252,"src":"32020:122:4","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3253,"src":"281:31863:4","usedErrors":[],"usedEvents":[]}],"src":"103:32042:4"},"id":4},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[5017]},"id":5018,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3254,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":3255,"nodeType":"StructuredDocumentation","src":"218:550:5","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":5017,"linearizedBaseContracts":[5017],"name":"SafeCast","nameLocation":"777:8:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3256,"nodeType":"StructuredDocumentation","src":"792:68:5","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":3262,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:5","nodeType":"ErrorDefinition","parameters":{"id":3261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3258,"mutability":"mutable","name":"bits","nameLocation":"908:4:5","nodeType":"VariableDeclaration","scope":3262,"src":"902:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3257,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3260,"mutability":"mutable","name":"value","nameLocation":"922:5:5","nodeType":"VariableDeclaration","scope":3262,"src":"914:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3259,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:5"},"src":"865:64:5"},{"documentation":{"id":3263,"nodeType":"StructuredDocumentation","src":"935:75:5","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":3267,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:5","nodeType":"ErrorDefinition","parameters":{"id":3266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3265,"mutability":"mutable","name":"value","nameLocation":"1056:5:5","nodeType":"VariableDeclaration","scope":3267,"src":"1049:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3264,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:5"},"src":"1015:48:5"},{"documentation":{"id":3268,"nodeType":"StructuredDocumentation","src":"1069:67:5","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":3274,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:5","nodeType":"ErrorDefinition","parameters":{"id":3273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3270,"mutability":"mutable","name":"bits","nameLocation":"1183:4:5","nodeType":"VariableDeclaration","scope":3274,"src":"1177:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3269,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3272,"mutability":"mutable","name":"value","nameLocation":"1196:5:5","nodeType":"VariableDeclaration","scope":3274,"src":"1189:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3271,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:5"},"src":"1141:62:5"},{"documentation":{"id":3275,"nodeType":"StructuredDocumentation","src":"1209:75:5","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":3279,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:5","nodeType":"ErrorDefinition","parameters":{"id":3278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3277,"mutability":"mutable","name":"value","nameLocation":"1331:5:5","nodeType":"VariableDeclaration","scope":3279,"src":"1323:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3276,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:5"},"src":"1289:49:5"},{"body":{"id":3306,"nodeType":"Block","src":"1695:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3287,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"1709:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3289,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":3288,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":3292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:5","memberName":"max","nodeType":"MemberAccess","src":"1717:17:5","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3300,"nodeType":"IfStatement","src":"1705:105:5","trueBody":{"id":3299,"nodeType":"Block","src":"1736:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":3295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:5","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":3296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"1793:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3294,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"1757:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3298,"nodeType":"RevertStatement","src":"1750:49:5"}]}},{"expression":{"arguments":[{"id":3303,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"1834:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3301,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:5","typeDescriptions":{}}},"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":3286,"id":3305,"nodeType":"Return","src":"1819:21:5"}]},"documentation":{"id":3280,"nodeType":"StructuredDocumentation","src":"1344:280:5","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":3307,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:5","nodeType":"FunctionDefinition","parameters":{"id":3283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3282,"mutability":"mutable","name":"value","nameLocation":"1656:5:5","nodeType":"VariableDeclaration","scope":3307,"src":"1648:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3281,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:5"},"returnParameters":{"id":3286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3307,"src":"1686:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":3284,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:5","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:5"},"scope":5017,"src":"1629:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3334,"nodeType":"Block","src":"2204:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3315,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"2218:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3317,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":3316,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":3320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:5","memberName":"max","nodeType":"MemberAccess","src":"2226:17:5","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3328,"nodeType":"IfStatement","src":"2214:105:5","trueBody":{"id":3327,"nodeType":"Block","src":"2245:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":3323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:5","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":3324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"2302:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3322,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2266:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3326,"nodeType":"RevertStatement","src":"2259:49:5"}]}},{"expression":{"arguments":[{"id":3331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"2343:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3329,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:5","typeDescriptions":{}}},"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":3314,"id":3333,"nodeType":"Return","src":"2328:21:5"}]},"documentation":{"id":3308,"nodeType":"StructuredDocumentation","src":"1853:280:5","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":3335,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:5","nodeType":"FunctionDefinition","parameters":{"id":3311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3310,"mutability":"mutable","name":"value","nameLocation":"2165:5:5","nodeType":"VariableDeclaration","scope":3335,"src":"2157:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3309,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:5"},"returnParameters":{"id":3314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3335,"src":"2195:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":3312,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:5","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:5"},"scope":5017,"src":"2138:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3362,"nodeType":"Block","src":"2713:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"2727:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3345,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":3344,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":3348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:5","memberName":"max","nodeType":"MemberAccess","src":"2735:17:5","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3356,"nodeType":"IfStatement","src":"2723:105:5","trueBody":{"id":3355,"nodeType":"Block","src":"2754:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":3351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:5","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":3352,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"2811:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3350,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2775:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3354,"nodeType":"RevertStatement","src":"2768:49:5"}]}},{"expression":{"arguments":[{"id":3359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"2852:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3357,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:5","typeDescriptions":{}}},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":3342,"id":3361,"nodeType":"Return","src":"2837:21:5"}]},"documentation":{"id":3336,"nodeType":"StructuredDocumentation","src":"2362:280:5","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":3363,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:5","nodeType":"FunctionDefinition","parameters":{"id":3339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3338,"mutability":"mutable","name":"value","nameLocation":"2674:5:5","nodeType":"VariableDeclaration","scope":3363,"src":"2666:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3337,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:5"},"returnParameters":{"id":3342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3363,"src":"2704:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":3340,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:5","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:5"},"scope":5017,"src":"2647:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3390,"nodeType":"Block","src":"3222:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3371,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3236:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3373,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":3372,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":3376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:5","memberName":"max","nodeType":"MemberAccess","src":"3244:17:5","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3384,"nodeType":"IfStatement","src":"3232:105:5","trueBody":{"id":3383,"nodeType":"Block","src":"3263:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":3379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:5","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":3380,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3320:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3378,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"3284:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3382,"nodeType":"RevertStatement","src":"3277:49:5"}]}},{"expression":{"arguments":[{"id":3387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3361:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3385,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:5","typeDescriptions":{}}},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":3370,"id":3389,"nodeType":"Return","src":"3346:21:5"}]},"documentation":{"id":3364,"nodeType":"StructuredDocumentation","src":"2871:280:5","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":3391,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:5","nodeType":"FunctionDefinition","parameters":{"id":3367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3366,"mutability":"mutable","name":"value","nameLocation":"3183:5:5","nodeType":"VariableDeclaration","scope":3391,"src":"3175:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3365,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:5"},"returnParameters":{"id":3370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3369,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3391,"src":"3213:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":3368,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:5","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:5"},"scope":5017,"src":"3156:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3418,"nodeType":"Block","src":"3731:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"3745:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3401,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":3400,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":3404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:5","memberName":"max","nodeType":"MemberAccess","src":"3753:17:5","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3412,"nodeType":"IfStatement","src":"3741:105:5","trueBody":{"id":3411,"nodeType":"Block","src":"3772:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":3407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:5","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":3408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"3829:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3406,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"3793:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3410,"nodeType":"RevertStatement","src":"3786:49:5"}]}},{"expression":{"arguments":[{"id":3415,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"3870:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3413,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:5","typeDescriptions":{}}},"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":3398,"id":3417,"nodeType":"Return","src":"3855:21:5"}]},"documentation":{"id":3392,"nodeType":"StructuredDocumentation","src":"3380:280:5","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":3419,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:5","nodeType":"FunctionDefinition","parameters":{"id":3395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3394,"mutability":"mutable","name":"value","nameLocation":"3692:5:5","nodeType":"VariableDeclaration","scope":3419,"src":"3684:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3393,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:5"},"returnParameters":{"id":3398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3419,"src":"3722:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":3396,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:5","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:5"},"scope":5017,"src":"3665:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3446,"nodeType":"Block","src":"4240:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3427,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"4254:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3429,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":3428,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":3432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:5","memberName":"max","nodeType":"MemberAccess","src":"4262:17:5","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3440,"nodeType":"IfStatement","src":"4250:105:5","trueBody":{"id":3439,"nodeType":"Block","src":"4281:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":3435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:5","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":3436,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"4338:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3434,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"4302:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3438,"nodeType":"RevertStatement","src":"4295:49:5"}]}},{"expression":{"arguments":[{"id":3443,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"4379:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3441,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:5","typeDescriptions":{}}},"id":3444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":3426,"id":3445,"nodeType":"Return","src":"4364:21:5"}]},"documentation":{"id":3420,"nodeType":"StructuredDocumentation","src":"3889:280:5","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":3447,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:5","nodeType":"FunctionDefinition","parameters":{"id":3423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3422,"mutability":"mutable","name":"value","nameLocation":"4201:5:5","nodeType":"VariableDeclaration","scope":3447,"src":"4193:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3421,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:5"},"returnParameters":{"id":3426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3425,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3447,"src":"4231:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":3424,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:5","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:5"},"scope":5017,"src":"4174:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3474,"nodeType":"Block","src":"4749:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3455,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"4763:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3457,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":3456,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":3460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:5","memberName":"max","nodeType":"MemberAccess","src":"4771:17:5","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3468,"nodeType":"IfStatement","src":"4759:105:5","trueBody":{"id":3467,"nodeType":"Block","src":"4790:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":3463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:5","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":3464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"4847:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3462,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"4811:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3466,"nodeType":"RevertStatement","src":"4804:49:5"}]}},{"expression":{"arguments":[{"id":3471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"4888:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3469,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:5","typeDescriptions":{}}},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":3454,"id":3473,"nodeType":"Return","src":"4873:21:5"}]},"documentation":{"id":3448,"nodeType":"StructuredDocumentation","src":"4398:280:5","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":3475,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:5","nodeType":"FunctionDefinition","parameters":{"id":3451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3450,"mutability":"mutable","name":"value","nameLocation":"4710:5:5","nodeType":"VariableDeclaration","scope":3475,"src":"4702:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3449,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:5"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3475,"src":"4740:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":3452,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:5","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:5"},"scope":5017,"src":"4683:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3502,"nodeType":"Block","src":"5258:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3483,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3478,"src":"5272:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3485,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":3484,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":3488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:5","memberName":"max","nodeType":"MemberAccess","src":"5280:17:5","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3496,"nodeType":"IfStatement","src":"5268:105:5","trueBody":{"id":3495,"nodeType":"Block","src":"5299:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":3491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:5","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":3492,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3478,"src":"5356:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3490,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"5320:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3494,"nodeType":"RevertStatement","src":"5313:49:5"}]}},{"expression":{"arguments":[{"id":3499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3478,"src":"5397:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3497,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:5","typeDescriptions":{}}},"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":3482,"id":3501,"nodeType":"Return","src":"5382:21:5"}]},"documentation":{"id":3476,"nodeType":"StructuredDocumentation","src":"4907:280:5","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":3503,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:5","nodeType":"FunctionDefinition","parameters":{"id":3479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3478,"mutability":"mutable","name":"value","nameLocation":"5219:5:5","nodeType":"VariableDeclaration","scope":3503,"src":"5211:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3477,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:5"},"returnParameters":{"id":3482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3503,"src":"5249:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3480,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:5","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:5"},"scope":5017,"src":"5192:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3530,"nodeType":"Block","src":"5767:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3511,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3506,"src":"5781:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3513,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":3512,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":3516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:5","memberName":"max","nodeType":"MemberAccess","src":"5789:17:5","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3524,"nodeType":"IfStatement","src":"5777:105:5","trueBody":{"id":3523,"nodeType":"Block","src":"5808:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":3519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:5","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":3520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3506,"src":"5865:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3518,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"5829:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3522,"nodeType":"RevertStatement","src":"5822:49:5"}]}},{"expression":{"arguments":[{"id":3527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3506,"src":"5906:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3525,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:5","typeDescriptions":{}}},"id":3528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":3510,"id":3529,"nodeType":"Return","src":"5891:21:5"}]},"documentation":{"id":3504,"nodeType":"StructuredDocumentation","src":"5416:280:5","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":3531,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:5","nodeType":"FunctionDefinition","parameters":{"id":3507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3506,"mutability":"mutable","name":"value","nameLocation":"5728:5:5","nodeType":"VariableDeclaration","scope":3531,"src":"5720:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3505,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:5"},"returnParameters":{"id":3510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3509,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3531,"src":"5758:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":3508,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:5","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:5"},"scope":5017,"src":"5701:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3558,"nodeType":"Block","src":"6276:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"6290:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3541,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":3540,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":3544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:5","memberName":"max","nodeType":"MemberAccess","src":"6298:17:5","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3552,"nodeType":"IfStatement","src":"6286:105:5","trueBody":{"id":3551,"nodeType":"Block","src":"6317:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":3547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:5","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":3548,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"6374:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3546,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"6338:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3550,"nodeType":"RevertStatement","src":"6331:49:5"}]}},{"expression":{"arguments":[{"id":3555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"6415:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3553,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:5","typeDescriptions":{}}},"id":3556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":3538,"id":3557,"nodeType":"Return","src":"6400:21:5"}]},"documentation":{"id":3532,"nodeType":"StructuredDocumentation","src":"5925:280:5","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":3559,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:5","nodeType":"FunctionDefinition","parameters":{"id":3535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3534,"mutability":"mutable","name":"value","nameLocation":"6237:5:5","nodeType":"VariableDeclaration","scope":3559,"src":"6229:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3533,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:5"},"returnParameters":{"id":3538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3559,"src":"6267:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":3536,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:5","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:5"},"scope":5017,"src":"6210:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3586,"nodeType":"Block","src":"6785:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3567,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"6799:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3569,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":3568,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":3572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:5","memberName":"max","nodeType":"MemberAccess","src":"6807:17:5","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3580,"nodeType":"IfStatement","src":"6795:105:5","trueBody":{"id":3579,"nodeType":"Block","src":"6826:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":3575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:5","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":3576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"6883:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3574,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"6847:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3578,"nodeType":"RevertStatement","src":"6840:49:5"}]}},{"expression":{"arguments":[{"id":3583,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"6924:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3581,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:5","typeDescriptions":{}}},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":3566,"id":3585,"nodeType":"Return","src":"6909:21:5"}]},"documentation":{"id":3560,"nodeType":"StructuredDocumentation","src":"6434:280:5","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":3587,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:5","nodeType":"FunctionDefinition","parameters":{"id":3563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3562,"mutability":"mutable","name":"value","nameLocation":"6746:5:5","nodeType":"VariableDeclaration","scope":3587,"src":"6738:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3561,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:5"},"returnParameters":{"id":3566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3587,"src":"6776:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":3564,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:5","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:5"},"scope":5017,"src":"6719:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3614,"nodeType":"Block","src":"7294:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"7308:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3597,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":3596,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":3600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:5","memberName":"max","nodeType":"MemberAccess","src":"7316:17:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3608,"nodeType":"IfStatement","src":"7304:105:5","trueBody":{"id":3607,"nodeType":"Block","src":"7335:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":3603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:5","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":3604,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"7392:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3602,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"7356:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3606,"nodeType":"RevertStatement","src":"7349:49:5"}]}},{"expression":{"arguments":[{"id":3611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"7433:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3609,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:5","typeDescriptions":{}}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":3594,"id":3613,"nodeType":"Return","src":"7418:21:5"}]},"documentation":{"id":3588,"nodeType":"StructuredDocumentation","src":"6943:280:5","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":3615,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:5","nodeType":"FunctionDefinition","parameters":{"id":3591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3590,"mutability":"mutable","name":"value","nameLocation":"7255:5:5","nodeType":"VariableDeclaration","scope":3615,"src":"7247:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3589,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:5"},"returnParameters":{"id":3594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3615,"src":"7285:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3592,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:5"},"scope":5017,"src":"7228:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3642,"nodeType":"Block","src":"7803:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"7817:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":3625,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":3624,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":3628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:5","memberName":"max","nodeType":"MemberAccess","src":"7825:17:5","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3636,"nodeType":"IfStatement","src":"7813:105:5","trueBody":{"id":3635,"nodeType":"Block","src":"7844:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":3631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:5","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":3632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"7901:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3630,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"7865:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3634,"nodeType":"RevertStatement","src":"7858:49:5"}]}},{"expression":{"arguments":[{"id":3639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"7942:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":3637,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:5","typeDescriptions":{}}},"id":3640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":3622,"id":3641,"nodeType":"Return","src":"7927:21:5"}]},"documentation":{"id":3616,"nodeType":"StructuredDocumentation","src":"7452:280:5","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":3643,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:5","nodeType":"FunctionDefinition","parameters":{"id":3619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3618,"mutability":"mutable","name":"value","nameLocation":"7764:5:5","nodeType":"VariableDeclaration","scope":3643,"src":"7756:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3617,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:5"},"returnParameters":{"id":3622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3621,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3643,"src":"7794:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":3620,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:5","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:5"},"scope":5017,"src":"7737:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3670,"nodeType":"Block","src":"8312:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3651,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"8326:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":3653,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":3652,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":3656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:5","memberName":"max","nodeType":"MemberAccess","src":"8334:17:5","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3664,"nodeType":"IfStatement","src":"8322:105:5","trueBody":{"id":3663,"nodeType":"Block","src":"8353:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":3659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:5","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":3660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"8410:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3658,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"8374:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3662,"nodeType":"RevertStatement","src":"8367:49:5"}]}},{"expression":{"arguments":[{"id":3667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"8451:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":3665,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:5","typeDescriptions":{}}},"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":3650,"id":3669,"nodeType":"Return","src":"8436:21:5"}]},"documentation":{"id":3644,"nodeType":"StructuredDocumentation","src":"7961:280:5","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":3671,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:5","nodeType":"FunctionDefinition","parameters":{"id":3647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"value","nameLocation":"8273:5:5","nodeType":"VariableDeclaration","scope":3671,"src":"8265:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3645,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:5"},"returnParameters":{"id":3650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3671,"src":"8303:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":3648,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:5","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:5"},"scope":5017,"src":"8246:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3698,"nodeType":"Block","src":"8821:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3679,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3674,"src":"8835:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":3681,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":3680,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":3684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:5","memberName":"max","nodeType":"MemberAccess","src":"8843:17:5","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3692,"nodeType":"IfStatement","src":"8831:105:5","trueBody":{"id":3691,"nodeType":"Block","src":"8862:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":3687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:5","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":3688,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3674,"src":"8919:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3686,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"8883:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3690,"nodeType":"RevertStatement","src":"8876:49:5"}]}},{"expression":{"arguments":[{"id":3695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3674,"src":"8960:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":3693,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:5","typeDescriptions":{}}},"id":3696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":3678,"id":3697,"nodeType":"Return","src":"8945:21:5"}]},"documentation":{"id":3672,"nodeType":"StructuredDocumentation","src":"8470:280:5","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":3699,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:5","nodeType":"FunctionDefinition","parameters":{"id":3675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3674,"mutability":"mutable","name":"value","nameLocation":"8782:5:5","nodeType":"VariableDeclaration","scope":3699,"src":"8774:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3673,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:5"},"returnParameters":{"id":3678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3677,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3699,"src":"8812:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":3676,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:5","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:5"},"scope":5017,"src":"8755:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3726,"nodeType":"Block","src":"9330:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3702,"src":"9344:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":3709,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":3708,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":3712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:5","memberName":"max","nodeType":"MemberAccess","src":"9352:17:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3720,"nodeType":"IfStatement","src":"9340:105:5","trueBody":{"id":3719,"nodeType":"Block","src":"9371:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":3715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:5","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":3716,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3702,"src":"9428:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3714,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"9392:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3718,"nodeType":"RevertStatement","src":"9385:49:5"}]}},{"expression":{"arguments":[{"id":3723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3702,"src":"9469:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":3721,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:5","typeDescriptions":{}}},"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":3706,"id":3725,"nodeType":"Return","src":"9454:21:5"}]},"documentation":{"id":3700,"nodeType":"StructuredDocumentation","src":"8979:280:5","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":3727,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:5","nodeType":"FunctionDefinition","parameters":{"id":3703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3702,"mutability":"mutable","name":"value","nameLocation":"9291:5:5","nodeType":"VariableDeclaration","scope":3727,"src":"9283:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3701,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:5"},"returnParameters":{"id":3706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3727,"src":"9321:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3704,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:5"},"scope":5017,"src":"9264:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3754,"nodeType":"Block","src":"9839:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3735,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3730,"src":"9853:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":3737,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":3736,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":3740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:5","memberName":"max","nodeType":"MemberAccess","src":"9861:17:5","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3748,"nodeType":"IfStatement","src":"9849:105:5","trueBody":{"id":3747,"nodeType":"Block","src":"9880:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":3743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:5","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":3744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3730,"src":"9937:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3742,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"9901:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3746,"nodeType":"RevertStatement","src":"9894:49:5"}]}},{"expression":{"arguments":[{"id":3751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3730,"src":"9978:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":3749,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:5","typeDescriptions":{}}},"id":3752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":3734,"id":3753,"nodeType":"Return","src":"9963:21:5"}]},"documentation":{"id":3728,"nodeType":"StructuredDocumentation","src":"9488:280:5","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":3755,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:5","nodeType":"FunctionDefinition","parameters":{"id":3731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3730,"mutability":"mutable","name":"value","nameLocation":"9800:5:5","nodeType":"VariableDeclaration","scope":3755,"src":"9792:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3729,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:5"},"returnParameters":{"id":3734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3733,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3755,"src":"9830:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":3732,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:5","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:5"},"scope":5017,"src":"9773:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3782,"nodeType":"Block","src":"10348:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3763,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3758,"src":"10362:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":3765,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":3764,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":3768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:5","memberName":"max","nodeType":"MemberAccess","src":"10370:17:5","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3776,"nodeType":"IfStatement","src":"10358:105:5","trueBody":{"id":3775,"nodeType":"Block","src":"10389:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":3771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:5","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":3772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3758,"src":"10446:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3770,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"10410:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3774,"nodeType":"RevertStatement","src":"10403:49:5"}]}},{"expression":{"arguments":[{"id":3779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3758,"src":"10487:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":3777,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:5","typeDescriptions":{}}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":3762,"id":3781,"nodeType":"Return","src":"10472:21:5"}]},"documentation":{"id":3756,"nodeType":"StructuredDocumentation","src":"9997:280:5","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":3783,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:5","nodeType":"FunctionDefinition","parameters":{"id":3759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3758,"mutability":"mutable","name":"value","nameLocation":"10309:5:5","nodeType":"VariableDeclaration","scope":3783,"src":"10301:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3757,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:5"},"returnParameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3783,"src":"10339:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":3760,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:5","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:5"},"scope":5017,"src":"10282:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3810,"nodeType":"Block","src":"10857:152:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3791,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"10871:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":3793,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":3792,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":3796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:5","memberName":"max","nodeType":"MemberAccess","src":"10879:17:5","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3804,"nodeType":"IfStatement","src":"10867:105:5","trueBody":{"id":3803,"nodeType":"Block","src":"10898:74:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":3799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:5","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":3800,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"10955:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3798,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"10919:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3802,"nodeType":"RevertStatement","src":"10912:49:5"}]}},{"expression":{"arguments":[{"id":3807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"10996:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":3805,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:5","typeDescriptions":{}}},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":3790,"id":3809,"nodeType":"Return","src":"10981:21:5"}]},"documentation":{"id":3784,"nodeType":"StructuredDocumentation","src":"10506:280:5","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":3811,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:5","nodeType":"FunctionDefinition","parameters":{"id":3787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3786,"mutability":"mutable","name":"value","nameLocation":"10818:5:5","nodeType":"VariableDeclaration","scope":3811,"src":"10810:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3785,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:5"},"returnParameters":{"id":3790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3811,"src":"10848:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":3788,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:5","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:5"},"scope":5017,"src":"10791:218:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3838,"nodeType":"Block","src":"11360:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"11374:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":3821,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":3820,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":3824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:5","memberName":"max","nodeType":"MemberAccess","src":"11382:16:5","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3832,"nodeType":"IfStatement","src":"11370:103:5","trueBody":{"id":3831,"nodeType":"Block","src":"11400:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":3827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:5","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":3828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"11456:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3826,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"11421:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3830,"nodeType":"RevertStatement","src":"11414:48:5"}]}},{"expression":{"arguments":[{"id":3835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"11496:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":3833,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:5","typeDescriptions":{}}},"id":3836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":3818,"id":3837,"nodeType":"Return","src":"11482:20:5"}]},"documentation":{"id":3812,"nodeType":"StructuredDocumentation","src":"11015:276:5","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":3839,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:5","nodeType":"FunctionDefinition","parameters":{"id":3815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3814,"mutability":"mutable","name":"value","nameLocation":"11322:5:5","nodeType":"VariableDeclaration","scope":3839,"src":"11314:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3813,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:5"},"returnParameters":{"id":3818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3839,"src":"11352:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3816,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:5","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:5"},"scope":5017,"src":"11296:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3866,"nodeType":"Block","src":"11860:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3847,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"11874:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":3849,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":3848,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":3852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:5","memberName":"max","nodeType":"MemberAccess","src":"11882:16:5","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3860,"nodeType":"IfStatement","src":"11870:103:5","trueBody":{"id":3859,"nodeType":"Block","src":"11900:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":3855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:5","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":3856,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"11956:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3854,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"11921:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3858,"nodeType":"RevertStatement","src":"11914:48:5"}]}},{"expression":{"arguments":[{"id":3863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"11996:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":3861,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:5","typeDescriptions":{}}},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":3846,"id":3865,"nodeType":"Return","src":"11982:20:5"}]},"documentation":{"id":3840,"nodeType":"StructuredDocumentation","src":"11515:276:5","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":3867,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:5","nodeType":"FunctionDefinition","parameters":{"id":3843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3842,"mutability":"mutable","name":"value","nameLocation":"11822:5:5","nodeType":"VariableDeclaration","scope":3867,"src":"11814:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3841,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:5"},"returnParameters":{"id":3846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3867,"src":"11852:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":3844,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:5","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:5"},"scope":5017,"src":"11796:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3894,"nodeType":"Block","src":"12360:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3875,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"12374:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":3877,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":3876,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":3880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:5","memberName":"max","nodeType":"MemberAccess","src":"12382:16:5","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3888,"nodeType":"IfStatement","src":"12370:103:5","trueBody":{"id":3887,"nodeType":"Block","src":"12400:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":3883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:5","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":3884,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"12456:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3882,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"12421:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3886,"nodeType":"RevertStatement","src":"12414:48:5"}]}},{"expression":{"arguments":[{"id":3891,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"12496:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":3889,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:5","typeDescriptions":{}}},"id":3892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":3874,"id":3893,"nodeType":"Return","src":"12482:20:5"}]},"documentation":{"id":3868,"nodeType":"StructuredDocumentation","src":"12015:276:5","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":3895,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:5","nodeType":"FunctionDefinition","parameters":{"id":3871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3870,"mutability":"mutable","name":"value","nameLocation":"12322:5:5","nodeType":"VariableDeclaration","scope":3895,"src":"12314:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3869,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:5"},"returnParameters":{"id":3874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3895,"src":"12352:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":3872,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:5","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:5"},"scope":5017,"src":"12296:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3922,"nodeType":"Block","src":"12860:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3903,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3898,"src":"12874:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":3905,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":3904,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":3908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:5","memberName":"max","nodeType":"MemberAccess","src":"12882:16:5","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3916,"nodeType":"IfStatement","src":"12870:103:5","trueBody":{"id":3915,"nodeType":"Block","src":"12900:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":3911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:5","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":3912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3898,"src":"12956:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3910,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"12921:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3914,"nodeType":"RevertStatement","src":"12914:48:5"}]}},{"expression":{"arguments":[{"id":3919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3898,"src":"12996:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":3917,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:5","typeDescriptions":{}}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":3902,"id":3921,"nodeType":"Return","src":"12982:20:5"}]},"documentation":{"id":3896,"nodeType":"StructuredDocumentation","src":"12515:276:5","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":3923,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:5","nodeType":"FunctionDefinition","parameters":{"id":3899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3898,"mutability":"mutable","name":"value","nameLocation":"12822:5:5","nodeType":"VariableDeclaration","scope":3923,"src":"12814:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3897,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:5"},"returnParameters":{"id":3902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3923,"src":"12852:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":3900,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:5","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:5"},"scope":5017,"src":"12796:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3950,"nodeType":"Block","src":"13360:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"13374:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3933,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":3932,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":3936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:5","memberName":"max","nodeType":"MemberAccess","src":"13382:16:5","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3944,"nodeType":"IfStatement","src":"13370:103:5","trueBody":{"id":3943,"nodeType":"Block","src":"13400:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":3939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:5","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":3940,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"13456:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3938,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"13421:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3942,"nodeType":"RevertStatement","src":"13414:48:5"}]}},{"expression":{"arguments":[{"id":3947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"13496:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3945,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:5","typeDescriptions":{}}},"id":3948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3930,"id":3949,"nodeType":"Return","src":"13482:20:5"}]},"documentation":{"id":3924,"nodeType":"StructuredDocumentation","src":"13015:276:5","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":3951,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:5","nodeType":"FunctionDefinition","parameters":{"id":3927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3926,"mutability":"mutable","name":"value","nameLocation":"13322:5:5","nodeType":"VariableDeclaration","scope":3951,"src":"13314:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3925,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:5"},"returnParameters":{"id":3930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3951,"src":"13352:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3928,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:5","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:5"},"scope":5017,"src":"13296:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3978,"nodeType":"Block","src":"13860:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3959,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3954,"src":"13874:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":3961,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":3960,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":3964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:5","memberName":"max","nodeType":"MemberAccess","src":"13882:16:5","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3972,"nodeType":"IfStatement","src":"13870:103:5","trueBody":{"id":3971,"nodeType":"Block","src":"13900:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":3967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:5","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":3968,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3954,"src":"13956:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3966,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"13921:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3970,"nodeType":"RevertStatement","src":"13914:48:5"}]}},{"expression":{"arguments":[{"id":3975,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3954,"src":"13996:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":3973,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:5","typeDescriptions":{}}},"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":3958,"id":3977,"nodeType":"Return","src":"13982:20:5"}]},"documentation":{"id":3952,"nodeType":"StructuredDocumentation","src":"13515:276:5","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":3979,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:5","nodeType":"FunctionDefinition","parameters":{"id":3955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3954,"mutability":"mutable","name":"value","nameLocation":"13822:5:5","nodeType":"VariableDeclaration","scope":3979,"src":"13814:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3953,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:5"},"returnParameters":{"id":3958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3979,"src":"13852:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":3956,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:5","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:5"},"scope":5017,"src":"13796:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4006,"nodeType":"Block","src":"14360:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"14374:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":3989,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":3988,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":3992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:5","memberName":"max","nodeType":"MemberAccess","src":"14382:16:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4000,"nodeType":"IfStatement","src":"14370:103:5","trueBody":{"id":3999,"nodeType":"Block","src":"14400:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":3995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:5","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":3996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"14456:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3994,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"14421:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3998,"nodeType":"RevertStatement","src":"14414:48:5"}]}},{"expression":{"arguments":[{"id":4003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"14496:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":4001,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:5","typeDescriptions":{}}},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":3986,"id":4005,"nodeType":"Return","src":"14482:20:5"}]},"documentation":{"id":3980,"nodeType":"StructuredDocumentation","src":"14015:276:5","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":4007,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:5","nodeType":"FunctionDefinition","parameters":{"id":3983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3982,"mutability":"mutable","name":"value","nameLocation":"14322:5:5","nodeType":"VariableDeclaration","scope":4007,"src":"14314:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3981,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:5"},"returnParameters":{"id":3986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4007,"src":"14352:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":3984,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:5"},"scope":5017,"src":"14296:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4034,"nodeType":"Block","src":"14860:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4015,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"14874:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":4017,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":4016,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":4020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:5","memberName":"max","nodeType":"MemberAccess","src":"14882:16:5","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4028,"nodeType":"IfStatement","src":"14870:103:5","trueBody":{"id":4027,"nodeType":"Block","src":"14900:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":4023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:5","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":4024,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"14956:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4022,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"14921:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4026,"nodeType":"RevertStatement","src":"14914:48:5"}]}},{"expression":{"arguments":[{"id":4031,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"14996:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":4029,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:5","typeDescriptions":{}}},"id":4032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":4014,"id":4033,"nodeType":"Return","src":"14982:20:5"}]},"documentation":{"id":4008,"nodeType":"StructuredDocumentation","src":"14515:276:5","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":4035,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:5","nodeType":"FunctionDefinition","parameters":{"id":4011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4010,"mutability":"mutable","name":"value","nameLocation":"14822:5:5","nodeType":"VariableDeclaration","scope":4035,"src":"14814:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4009,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:5"},"returnParameters":{"id":4014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4035,"src":"14852:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":4012,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:5","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:5"},"scope":5017,"src":"14796:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4062,"nodeType":"Block","src":"15360:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"15374:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":4045,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":4044,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":4048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:5","memberName":"max","nodeType":"MemberAccess","src":"15382:16:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4056,"nodeType":"IfStatement","src":"15370:103:5","trueBody":{"id":4055,"nodeType":"Block","src":"15400:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":4051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:5","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":4052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"15456:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4050,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"15421:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4054,"nodeType":"RevertStatement","src":"15414:48:5"}]}},{"expression":{"arguments":[{"id":4059,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"15496:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":4057,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:5","typeDescriptions":{}}},"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":4042,"id":4061,"nodeType":"Return","src":"15482:20:5"}]},"documentation":{"id":4036,"nodeType":"StructuredDocumentation","src":"15015:276:5","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":4063,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:5","nodeType":"FunctionDefinition","parameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"value","nameLocation":"15322:5:5","nodeType":"VariableDeclaration","scope":4063,"src":"15314:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4037,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:5"},"returnParameters":{"id":4042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4063,"src":"15352:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4040,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:5"},"scope":5017,"src":"15296:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4090,"nodeType":"Block","src":"15860:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"15874:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":4073,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":4072,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":4076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:5","memberName":"max","nodeType":"MemberAccess","src":"15882:16:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4084,"nodeType":"IfStatement","src":"15870:103:5","trueBody":{"id":4083,"nodeType":"Block","src":"15900:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":4079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:5","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":4080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"15956:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4078,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"15921:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4082,"nodeType":"RevertStatement","src":"15914:48:5"}]}},{"expression":{"arguments":[{"id":4087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"15996:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":4085,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:5","typeDescriptions":{}}},"id":4088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":4070,"id":4089,"nodeType":"Return","src":"15982:20:5"}]},"documentation":{"id":4064,"nodeType":"StructuredDocumentation","src":"15515:276:5","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":4091,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:5","nodeType":"FunctionDefinition","parameters":{"id":4067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4066,"mutability":"mutable","name":"value","nameLocation":"15822:5:5","nodeType":"VariableDeclaration","scope":4091,"src":"15814:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4065,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:5"},"returnParameters":{"id":4070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4069,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4091,"src":"15852:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4068,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:5","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:5"},"scope":5017,"src":"15796:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4118,"nodeType":"Block","src":"16360:149:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"16374:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":4101,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":4100,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":4104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:5","memberName":"max","nodeType":"MemberAccess","src":"16382:16:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4112,"nodeType":"IfStatement","src":"16370:103:5","trueBody":{"id":4111,"nodeType":"Block","src":"16400:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":4107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:5","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":4108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"16456:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4106,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"16421:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4110,"nodeType":"RevertStatement","src":"16414:48:5"}]}},{"expression":{"arguments":[{"id":4115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"16496:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":4113,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:5","typeDescriptions":{}}},"id":4116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":4098,"id":4117,"nodeType":"Return","src":"16482:20:5"}]},"documentation":{"id":4092,"nodeType":"StructuredDocumentation","src":"16015:276:5","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":4119,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:5","nodeType":"FunctionDefinition","parameters":{"id":4095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4094,"mutability":"mutable","name":"value","nameLocation":"16322:5:5","nodeType":"VariableDeclaration","scope":4119,"src":"16314:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4093,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:5"},"returnParameters":{"id":4098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4119,"src":"16352:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4096,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:5"},"scope":5017,"src":"16296:213:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4146,"nodeType":"Block","src":"16854:146:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"16868:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4129,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":4128,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":4132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:5","memberName":"max","nodeType":"MemberAccess","src":"16876:15:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4140,"nodeType":"IfStatement","src":"16864:101:5","trueBody":{"id":4139,"nodeType":"Block","src":"16893:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":4135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:5","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":4136,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"16948:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4134,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"16914:30:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4138,"nodeType":"RevertStatement","src":"16907:47:5"}]}},{"expression":{"arguments":[{"id":4143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"16987:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4141,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:5","typeDescriptions":{}}},"id":4144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":4126,"id":4145,"nodeType":"Return","src":"16974:19:5"}]},"documentation":{"id":4120,"nodeType":"StructuredDocumentation","src":"16515:272:5","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":4147,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:5","nodeType":"FunctionDefinition","parameters":{"id":4123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4122,"mutability":"mutable","name":"value","nameLocation":"16817:5:5","nodeType":"VariableDeclaration","scope":4147,"src":"16809:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4121,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:5"},"returnParameters":{"id":4126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4147,"src":"16847:5:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4124,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:5"},"scope":5017,"src":"16792:208:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4169,"nodeType":"Block","src":"17236:128:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4155,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"17250:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4163,"nodeType":"IfStatement","src":"17246:81:5","trueBody":{"id":4162,"nodeType":"Block","src":"17261:66:5","statements":[{"errorCall":{"arguments":[{"id":4159,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"17310:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4158,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3267,"src":"17282:27:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4161,"nodeType":"RevertStatement","src":"17275:41:5"}]}},{"expression":{"arguments":[{"id":4166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"17351:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4164,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:5","typeDescriptions":{}}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4154,"id":4168,"nodeType":"Return","src":"17336:21:5"}]},"documentation":{"id":4148,"nodeType":"StructuredDocumentation","src":"17006:160:5","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":4170,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:5","nodeType":"FunctionDefinition","parameters":{"id":4151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4150,"mutability":"mutable","name":"value","nameLocation":"17197:5:5","nodeType":"VariableDeclaration","scope":4170,"src":"17190:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4149,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:5"},"returnParameters":{"id":4154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4170,"src":"17227:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4152,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:5"},"scope":5017,"src":"17171:193:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4195,"nodeType":"Block","src":"17761:150:5","statements":[{"expression":{"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4178,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"17771:10:5","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"17791:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":4179,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:5","typeDescriptions":{}}},"id":4182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:5","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":4184,"nodeType":"ExpressionStatement","src":"17771:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4185,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"17811:10:5","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4186,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"17825:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4194,"nodeType":"IfStatement","src":"17807:98:5","trueBody":{"id":4193,"nodeType":"Block","src":"17832:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":4189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:5","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":4190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"17888:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4188,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"17853:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4192,"nodeType":"RevertStatement","src":"17846:48:5"}]}}]},"documentation":{"id":4171,"nodeType":"StructuredDocumentation","src":"17370:312:5","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":4196,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:5","nodeType":"FunctionDefinition","parameters":{"id":4174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4173,"mutability":"mutable","name":"value","nameLocation":"17712:5:5","nodeType":"VariableDeclaration","scope":4196,"src":"17705:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4172,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:5"},"returnParameters":{"id":4177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4176,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:5","nodeType":"VariableDeclaration","scope":4196,"src":"17742:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":4175,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:5","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:5"},"scope":5017,"src":"17687:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4221,"nodeType":"Block","src":"18308:150:5","statements":[{"expression":{"id":4209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4204,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"18318:10:5","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"18338:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":4205,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:5","typeDescriptions":{}}},"id":4208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:5","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":4210,"nodeType":"ExpressionStatement","src":"18318:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4211,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"18358:10:5","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"18372:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4220,"nodeType":"IfStatement","src":"18354:98:5","trueBody":{"id":4219,"nodeType":"Block","src":"18379:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":4215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:5","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":4216,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"18435:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4214,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"18400:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4218,"nodeType":"RevertStatement","src":"18393:48:5"}]}}]},"documentation":{"id":4197,"nodeType":"StructuredDocumentation","src":"17917:312:5","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":4222,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:5","nodeType":"FunctionDefinition","parameters":{"id":4200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4199,"mutability":"mutable","name":"value","nameLocation":"18259:5:5","nodeType":"VariableDeclaration","scope":4222,"src":"18252:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4198,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:5"},"returnParameters":{"id":4203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4202,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:5","nodeType":"VariableDeclaration","scope":4222,"src":"18289:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":4201,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:5","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:5"},"scope":5017,"src":"18234:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4247,"nodeType":"Block","src":"18855:150:5","statements":[{"expression":{"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4230,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4228,"src":"18865:10:5","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"18885:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":4231,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:5","typeDescriptions":{}}},"id":4234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:5","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":4236,"nodeType":"ExpressionStatement","src":"18865:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4237,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4228,"src":"18905:10:5","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4238,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"18919:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4246,"nodeType":"IfStatement","src":"18901:98:5","trueBody":{"id":4245,"nodeType":"Block","src":"18926:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":4241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:5","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":4242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"18982:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4240,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"18947:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4244,"nodeType":"RevertStatement","src":"18940:48:5"}]}}]},"documentation":{"id":4223,"nodeType":"StructuredDocumentation","src":"18464:312:5","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":4248,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:5","nodeType":"FunctionDefinition","parameters":{"id":4226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4225,"mutability":"mutable","name":"value","nameLocation":"18806:5:5","nodeType":"VariableDeclaration","scope":4248,"src":"18799:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4224,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:5"},"returnParameters":{"id":4229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4228,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:5","nodeType":"VariableDeclaration","scope":4248,"src":"18836:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":4227,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:5","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:5"},"scope":5017,"src":"18781:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4273,"nodeType":"Block","src":"19402:150:5","statements":[{"expression":{"id":4261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4256,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"19412:10:5","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4259,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4251,"src":"19432:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":4257,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:5","typeDescriptions":{}}},"id":4260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:5","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":4262,"nodeType":"ExpressionStatement","src":"19412:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4263,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"19452:10:5","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4251,"src":"19466:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4272,"nodeType":"IfStatement","src":"19448:98:5","trueBody":{"id":4271,"nodeType":"Block","src":"19473:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":4267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:5","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":4268,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4251,"src":"19529:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4266,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"19494:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4270,"nodeType":"RevertStatement","src":"19487:48:5"}]}}]},"documentation":{"id":4249,"nodeType":"StructuredDocumentation","src":"19011:312:5","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":4274,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:5","nodeType":"FunctionDefinition","parameters":{"id":4252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4251,"mutability":"mutable","name":"value","nameLocation":"19353:5:5","nodeType":"VariableDeclaration","scope":4274,"src":"19346:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4250,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:5"},"returnParameters":{"id":4255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4254,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:5","nodeType":"VariableDeclaration","scope":4274,"src":"19383:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":4253,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:5","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:5"},"scope":5017,"src":"19328:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4299,"nodeType":"Block","src":"19949:150:5","statements":[{"expression":{"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4282,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"19959:10:5","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4277,"src":"19979:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":4283,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:5","typeDescriptions":{}}},"id":4286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:5","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":4288,"nodeType":"ExpressionStatement","src":"19959:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4289,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"19999:10:5","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4277,"src":"20013:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4298,"nodeType":"IfStatement","src":"19995:98:5","trueBody":{"id":4297,"nodeType":"Block","src":"20020:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":4293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:5","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":4294,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4277,"src":"20076:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4292,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"20041:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4296,"nodeType":"RevertStatement","src":"20034:48:5"}]}}]},"documentation":{"id":4275,"nodeType":"StructuredDocumentation","src":"19558:312:5","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":4300,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:5","nodeType":"FunctionDefinition","parameters":{"id":4278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4277,"mutability":"mutable","name":"value","nameLocation":"19900:5:5","nodeType":"VariableDeclaration","scope":4300,"src":"19893:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4276,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:5"},"returnParameters":{"id":4281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4280,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:5","nodeType":"VariableDeclaration","scope":4300,"src":"19930:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":4279,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:5","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:5"},"scope":5017,"src":"19875:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4325,"nodeType":"Block","src":"20496:150:5","statements":[{"expression":{"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4308,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"20506:10:5","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4311,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"20526:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":4309,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:5","typeDescriptions":{}}},"id":4312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:5","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":4314,"nodeType":"ExpressionStatement","src":"20506:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4315,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"20546:10:5","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4316,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"20560:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4324,"nodeType":"IfStatement","src":"20542:98:5","trueBody":{"id":4323,"nodeType":"Block","src":"20567:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":4319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:5","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":4320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"20623:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4318,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"20588:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4322,"nodeType":"RevertStatement","src":"20581:48:5"}]}}]},"documentation":{"id":4301,"nodeType":"StructuredDocumentation","src":"20105:312:5","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":4326,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:5","nodeType":"FunctionDefinition","parameters":{"id":4304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4303,"mutability":"mutable","name":"value","nameLocation":"20447:5:5","nodeType":"VariableDeclaration","scope":4326,"src":"20440:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4302,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:5"},"returnParameters":{"id":4307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4306,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:5","nodeType":"VariableDeclaration","scope":4326,"src":"20477:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":4305,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:5","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:5"},"scope":5017,"src":"20422:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4351,"nodeType":"Block","src":"21043:150:5","statements":[{"expression":{"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4334,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"21053:10:5","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4337,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21073:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":4335,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:5","typeDescriptions":{}}},"id":4338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:5","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":4340,"nodeType":"ExpressionStatement","src":"21053:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4341,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"21093:10:5","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21107:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4350,"nodeType":"IfStatement","src":"21089:98:5","trueBody":{"id":4349,"nodeType":"Block","src":"21114:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":4345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:5","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":4346,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21170:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4344,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"21135:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4348,"nodeType":"RevertStatement","src":"21128:48:5"}]}}]},"documentation":{"id":4327,"nodeType":"StructuredDocumentation","src":"20652:312:5","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":4352,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:5","nodeType":"FunctionDefinition","parameters":{"id":4330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4329,"mutability":"mutable","name":"value","nameLocation":"20994:5:5","nodeType":"VariableDeclaration","scope":4352,"src":"20987:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4328,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:5"},"returnParameters":{"id":4333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4332,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:5","nodeType":"VariableDeclaration","scope":4352,"src":"21024:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":4331,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:5","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:5"},"scope":5017,"src":"20969:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4377,"nodeType":"Block","src":"21590:150:5","statements":[{"expression":{"id":4365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4360,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"21600:10:5","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"21620:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":4361,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:5","typeDescriptions":{}}},"id":4364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:5","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":4366,"nodeType":"ExpressionStatement","src":"21600:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4367,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"21640:10:5","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"21654:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4376,"nodeType":"IfStatement","src":"21636:98:5","trueBody":{"id":4375,"nodeType":"Block","src":"21661:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":4371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:5","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":4372,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"21717:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4370,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"21682:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4374,"nodeType":"RevertStatement","src":"21675:48:5"}]}}]},"documentation":{"id":4353,"nodeType":"StructuredDocumentation","src":"21199:312:5","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":4378,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:5","nodeType":"FunctionDefinition","parameters":{"id":4356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4355,"mutability":"mutable","name":"value","nameLocation":"21541:5:5","nodeType":"VariableDeclaration","scope":4378,"src":"21534:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4354,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:5"},"returnParameters":{"id":4359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4358,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:5","nodeType":"VariableDeclaration","scope":4378,"src":"21571:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":4357,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:5","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:5"},"scope":5017,"src":"21516:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4403,"nodeType":"Block","src":"22137:150:5","statements":[{"expression":{"id":4391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4386,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4384,"src":"22147:10:5","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"22167:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":4387,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:5","typeDescriptions":{}}},"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:5","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":4392,"nodeType":"ExpressionStatement","src":"22147:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4393,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4384,"src":"22187:10:5","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"22201:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4402,"nodeType":"IfStatement","src":"22183:98:5","trueBody":{"id":4401,"nodeType":"Block","src":"22208:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":4397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:5","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":4398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"22264:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4396,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"22229:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4400,"nodeType":"RevertStatement","src":"22222:48:5"}]}}]},"documentation":{"id":4379,"nodeType":"StructuredDocumentation","src":"21746:312:5","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":4404,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:5","nodeType":"FunctionDefinition","parameters":{"id":4382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4381,"mutability":"mutable","name":"value","nameLocation":"22088:5:5","nodeType":"VariableDeclaration","scope":4404,"src":"22081:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4380,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:5"},"returnParameters":{"id":4385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4384,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:5","nodeType":"VariableDeclaration","scope":4404,"src":"22118:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":4383,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:5","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:5"},"scope":5017,"src":"22063:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4429,"nodeType":"Block","src":"22684:150:5","statements":[{"expression":{"id":4417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4412,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"22694:10:5","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4415,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"22714:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":4413,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:5","typeDescriptions":{}}},"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:5","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":4418,"nodeType":"ExpressionStatement","src":"22694:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4419,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"22734:10:5","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"22748:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4428,"nodeType":"IfStatement","src":"22730:98:5","trueBody":{"id":4427,"nodeType":"Block","src":"22755:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":4423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:5","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":4424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"22811:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4422,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"22776:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4426,"nodeType":"RevertStatement","src":"22769:48:5"}]}}]},"documentation":{"id":4405,"nodeType":"StructuredDocumentation","src":"22293:312:5","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":4430,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:5","nodeType":"FunctionDefinition","parameters":{"id":4408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4407,"mutability":"mutable","name":"value","nameLocation":"22635:5:5","nodeType":"VariableDeclaration","scope":4430,"src":"22628:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4406,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:5"},"returnParameters":{"id":4411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4410,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:5","nodeType":"VariableDeclaration","scope":4430,"src":"22665:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":4409,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:5","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:5"},"scope":5017,"src":"22610:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4455,"nodeType":"Block","src":"23231:150:5","statements":[{"expression":{"id":4443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4438,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"23241:10:5","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"23261:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":4439,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:5","typeDescriptions":{}}},"id":4442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:5","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":4444,"nodeType":"ExpressionStatement","src":"23241:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4445,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"23281:10:5","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"23295:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4454,"nodeType":"IfStatement","src":"23277:98:5","trueBody":{"id":4453,"nodeType":"Block","src":"23302:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":4449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:5","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":4450,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"23358:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4448,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"23323:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4452,"nodeType":"RevertStatement","src":"23316:48:5"}]}}]},"documentation":{"id":4431,"nodeType":"StructuredDocumentation","src":"22840:312:5","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":4456,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:5","nodeType":"FunctionDefinition","parameters":{"id":4434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4433,"mutability":"mutable","name":"value","nameLocation":"23182:5:5","nodeType":"VariableDeclaration","scope":4456,"src":"23175:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4432,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:5"},"returnParameters":{"id":4437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4436,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:5","nodeType":"VariableDeclaration","scope":4456,"src":"23212:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":4435,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:5","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:5"},"scope":5017,"src":"23157:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4481,"nodeType":"Block","src":"23778:150:5","statements":[{"expression":{"id":4469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4464,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4462,"src":"23788:10:5","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4467,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"23808:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":4465,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:5","typeDescriptions":{}}},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:5","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":4470,"nodeType":"ExpressionStatement","src":"23788:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4471,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4462,"src":"23828:10:5","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4472,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"23842:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4480,"nodeType":"IfStatement","src":"23824:98:5","trueBody":{"id":4479,"nodeType":"Block","src":"23849:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":4475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:5","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":4476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"23905:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4474,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"23870:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4478,"nodeType":"RevertStatement","src":"23863:48:5"}]}}]},"documentation":{"id":4457,"nodeType":"StructuredDocumentation","src":"23387:312:5","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":4482,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:5","nodeType":"FunctionDefinition","parameters":{"id":4460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4459,"mutability":"mutable","name":"value","nameLocation":"23729:5:5","nodeType":"VariableDeclaration","scope":4482,"src":"23722:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4458,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:5"},"returnParameters":{"id":4463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4462,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:5","nodeType":"VariableDeclaration","scope":4482,"src":"23759:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":4461,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:5","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:5"},"scope":5017,"src":"23704:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4507,"nodeType":"Block","src":"24325:150:5","statements":[{"expression":{"id":4495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4490,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4488,"src":"24335:10:5","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"24355:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":4491,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:5","typeDescriptions":{}}},"id":4494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:5","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":4496,"nodeType":"ExpressionStatement","src":"24335:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4497,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4488,"src":"24375:10:5","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"24389:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4506,"nodeType":"IfStatement","src":"24371:98:5","trueBody":{"id":4505,"nodeType":"Block","src":"24396:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":4501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:5","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":4502,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"24452:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4500,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"24417:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4504,"nodeType":"RevertStatement","src":"24410:48:5"}]}}]},"documentation":{"id":4483,"nodeType":"StructuredDocumentation","src":"23934:312:5","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":4508,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:5","nodeType":"FunctionDefinition","parameters":{"id":4486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4485,"mutability":"mutable","name":"value","nameLocation":"24276:5:5","nodeType":"VariableDeclaration","scope":4508,"src":"24269:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4484,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:5"},"returnParameters":{"id":4489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4488,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:5","nodeType":"VariableDeclaration","scope":4508,"src":"24306:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":4487,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:5","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:5"},"scope":5017,"src":"24251:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4533,"nodeType":"Block","src":"24872:150:5","statements":[{"expression":{"id":4521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4516,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"24882:10:5","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4519,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"24902:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":4517,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:5","typeDescriptions":{}}},"id":4520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:5","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":4522,"nodeType":"ExpressionStatement","src":"24882:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4523,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"24922:10:5","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"24936:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4532,"nodeType":"IfStatement","src":"24918:98:5","trueBody":{"id":4531,"nodeType":"Block","src":"24943:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":4527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:5","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":4528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"24999:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4526,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"24964:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4530,"nodeType":"RevertStatement","src":"24957:48:5"}]}}]},"documentation":{"id":4509,"nodeType":"StructuredDocumentation","src":"24481:312:5","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":4534,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:5","nodeType":"FunctionDefinition","parameters":{"id":4512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4511,"mutability":"mutable","name":"value","nameLocation":"24823:5:5","nodeType":"VariableDeclaration","scope":4534,"src":"24816:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4510,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:5"},"returnParameters":{"id":4515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4514,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:5","nodeType":"VariableDeclaration","scope":4534,"src":"24853:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":4513,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:5","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:5"},"scope":5017,"src":"24798:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4559,"nodeType":"Block","src":"25419:150:5","statements":[{"expression":{"id":4547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4542,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"25429:10:5","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"25449:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":4543,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:5","typeDescriptions":{}}},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:5","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":4548,"nodeType":"ExpressionStatement","src":"25429:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4549,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"25469:10:5","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"25483:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4558,"nodeType":"IfStatement","src":"25465:98:5","trueBody":{"id":4557,"nodeType":"Block","src":"25490:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":4553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:5","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":4554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"25546:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4552,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"25511:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4556,"nodeType":"RevertStatement","src":"25504:48:5"}]}}]},"documentation":{"id":4535,"nodeType":"StructuredDocumentation","src":"25028:312:5","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":4560,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:5","nodeType":"FunctionDefinition","parameters":{"id":4538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4537,"mutability":"mutable","name":"value","nameLocation":"25370:5:5","nodeType":"VariableDeclaration","scope":4560,"src":"25363:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4536,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:5"},"returnParameters":{"id":4541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4540,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:5","nodeType":"VariableDeclaration","scope":4560,"src":"25400:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":4539,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:5","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:5"},"scope":5017,"src":"25345:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4585,"nodeType":"Block","src":"25966:150:5","statements":[{"expression":{"id":4573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4568,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"25976:10:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4571,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4563,"src":"25996:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":4569,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:5","typeDescriptions":{}}},"id":4572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":4574,"nodeType":"ExpressionStatement","src":"25976:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4575,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"26016:10:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4563,"src":"26030:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4584,"nodeType":"IfStatement","src":"26012:98:5","trueBody":{"id":4583,"nodeType":"Block","src":"26037:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":4579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:5","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":4580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4563,"src":"26093:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4578,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"26058:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4582,"nodeType":"RevertStatement","src":"26051:48:5"}]}}]},"documentation":{"id":4561,"nodeType":"StructuredDocumentation","src":"25575:312:5","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":4586,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:5","nodeType":"FunctionDefinition","parameters":{"id":4564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4563,"mutability":"mutable","name":"value","nameLocation":"25917:5:5","nodeType":"VariableDeclaration","scope":4586,"src":"25910:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4562,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:5"},"returnParameters":{"id":4567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4566,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:5","nodeType":"VariableDeclaration","scope":4586,"src":"25947:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4565,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:5","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:5"},"scope":5017,"src":"25892:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4611,"nodeType":"Block","src":"26513:150:5","statements":[{"expression":{"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4594,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4592,"src":"26523:10:5","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"26543:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":4595,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:5","typeDescriptions":{}}},"id":4598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:5","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":4600,"nodeType":"ExpressionStatement","src":"26523:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4601,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4592,"src":"26563:10:5","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"26577:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4610,"nodeType":"IfStatement","src":"26559:98:5","trueBody":{"id":4609,"nodeType":"Block","src":"26584:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":4605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:5","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":4606,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"26640:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4604,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"26605:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4608,"nodeType":"RevertStatement","src":"26598:48:5"}]}}]},"documentation":{"id":4587,"nodeType":"StructuredDocumentation","src":"26122:312:5","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":4612,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:5","nodeType":"FunctionDefinition","parameters":{"id":4590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4589,"mutability":"mutable","name":"value","nameLocation":"26464:5:5","nodeType":"VariableDeclaration","scope":4612,"src":"26457:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4588,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:5"},"returnParameters":{"id":4593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4592,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:5","nodeType":"VariableDeclaration","scope":4612,"src":"26494:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":4591,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:5","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:5"},"scope":5017,"src":"26439:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4637,"nodeType":"Block","src":"27060:150:5","statements":[{"expression":{"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4620,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"27070:10:5","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"27090:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":4621,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:5","typeDescriptions":{}}},"id":4624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:5","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":4626,"nodeType":"ExpressionStatement","src":"27070:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4627,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"27110:10:5","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"27124:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4636,"nodeType":"IfStatement","src":"27106:98:5","trueBody":{"id":4635,"nodeType":"Block","src":"27131:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":4631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:5","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":4632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"27187:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4630,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"27152:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4634,"nodeType":"RevertStatement","src":"27145:48:5"}]}}]},"documentation":{"id":4613,"nodeType":"StructuredDocumentation","src":"26669:312:5","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":4638,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:5","nodeType":"FunctionDefinition","parameters":{"id":4616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4615,"mutability":"mutable","name":"value","nameLocation":"27011:5:5","nodeType":"VariableDeclaration","scope":4638,"src":"27004:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4614,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:5"},"returnParameters":{"id":4619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4618,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:5","nodeType":"VariableDeclaration","scope":4638,"src":"27041:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":4617,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:5","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:5"},"scope":5017,"src":"26986:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4663,"nodeType":"Block","src":"27607:150:5","statements":[{"expression":{"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4646,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"27617:10:5","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"27637:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":4647,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:5","typeDescriptions":{}}},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:5","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":4652,"nodeType":"ExpressionStatement","src":"27617:26:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4653,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"27657:10:5","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"27671:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4662,"nodeType":"IfStatement","src":"27653:98:5","trueBody":{"id":4661,"nodeType":"Block","src":"27678:73:5","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":4657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:5","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":4658,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"27734:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4656,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"27699:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4660,"nodeType":"RevertStatement","src":"27692:48:5"}]}}]},"documentation":{"id":4639,"nodeType":"StructuredDocumentation","src":"27216:312:5","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":4664,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:5","nodeType":"FunctionDefinition","parameters":{"id":4642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4641,"mutability":"mutable","name":"value","nameLocation":"27558:5:5","nodeType":"VariableDeclaration","scope":4664,"src":"27551:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4640,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:5"},"returnParameters":{"id":4645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4644,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:5","nodeType":"VariableDeclaration","scope":4664,"src":"27588:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4643,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:5","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:5"},"scope":5017,"src":"27533:224:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4689,"nodeType":"Block","src":"28147:148:5","statements":[{"expression":{"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4672,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4670,"src":"28157:10:5","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4667,"src":"28176:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":4673,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:5","typeDescriptions":{}}},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:5","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":4678,"nodeType":"ExpressionStatement","src":"28157:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4679,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4670,"src":"28196:10:5","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4667,"src":"28210:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4688,"nodeType":"IfStatement","src":"28192:97:5","trueBody":{"id":4687,"nodeType":"Block","src":"28217:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":4683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:5","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":4684,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4667,"src":"28272:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4682,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"28238:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4686,"nodeType":"RevertStatement","src":"28231:47:5"}]}}]},"documentation":{"id":4665,"nodeType":"StructuredDocumentation","src":"27763:307:5","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":4690,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:5","nodeType":"FunctionDefinition","parameters":{"id":4668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4667,"mutability":"mutable","name":"value","nameLocation":"28099:5:5","nodeType":"VariableDeclaration","scope":4690,"src":"28092:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4666,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:5"},"returnParameters":{"id":4671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4670,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:5","nodeType":"VariableDeclaration","scope":4690,"src":"28129:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":4669,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:5","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:5"},"scope":5017,"src":"28075:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4715,"nodeType":"Block","src":"28685:148:5","statements":[{"expression":{"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4698,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4696,"src":"28695:10:5","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4701,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4693,"src":"28714:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":4699,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:5","typeDescriptions":{}}},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:5","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":4704,"nodeType":"ExpressionStatement","src":"28695:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4705,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4696,"src":"28734:10:5","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4706,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4693,"src":"28748:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4714,"nodeType":"IfStatement","src":"28730:97:5","trueBody":{"id":4713,"nodeType":"Block","src":"28755:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":4709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:5","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":4710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4693,"src":"28810:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4708,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"28776:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4712,"nodeType":"RevertStatement","src":"28769:47:5"}]}}]},"documentation":{"id":4691,"nodeType":"StructuredDocumentation","src":"28301:307:5","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":4716,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:5","nodeType":"FunctionDefinition","parameters":{"id":4694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4693,"mutability":"mutable","name":"value","nameLocation":"28637:5:5","nodeType":"VariableDeclaration","scope":4716,"src":"28630:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4692,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:5"},"returnParameters":{"id":4697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4696,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:5","nodeType":"VariableDeclaration","scope":4716,"src":"28667:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":4695,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:5","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:5"},"scope":5017,"src":"28613:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4741,"nodeType":"Block","src":"29223:148:5","statements":[{"expression":{"id":4729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4724,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"29233:10:5","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4727,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"29252:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":4725,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:5","typeDescriptions":{}}},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:5","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":4730,"nodeType":"ExpressionStatement","src":"29233:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4731,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"29272:10:5","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"29286:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4740,"nodeType":"IfStatement","src":"29268:97:5","trueBody":{"id":4739,"nodeType":"Block","src":"29293:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":4735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:5","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":4736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"29348:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4734,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"29314:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4738,"nodeType":"RevertStatement","src":"29307:47:5"}]}}]},"documentation":{"id":4717,"nodeType":"StructuredDocumentation","src":"28839:307:5","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":4742,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:5","nodeType":"FunctionDefinition","parameters":{"id":4720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4719,"mutability":"mutable","name":"value","nameLocation":"29175:5:5","nodeType":"VariableDeclaration","scope":4742,"src":"29168:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4718,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:5"},"returnParameters":{"id":4723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4722,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:5","nodeType":"VariableDeclaration","scope":4742,"src":"29205:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":4721,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:5","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:5"},"scope":5017,"src":"29151:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4767,"nodeType":"Block","src":"29761:148:5","statements":[{"expression":{"id":4755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4750,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4748,"src":"29771:10:5","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4753,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4745,"src":"29790:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":4751,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:5","typeDescriptions":{}}},"id":4754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:5","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":4756,"nodeType":"ExpressionStatement","src":"29771:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4757,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4748,"src":"29810:10:5","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4758,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4745,"src":"29824:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4766,"nodeType":"IfStatement","src":"29806:97:5","trueBody":{"id":4765,"nodeType":"Block","src":"29831:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":4761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:5","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":4762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4745,"src":"29886:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4760,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"29852:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4764,"nodeType":"RevertStatement","src":"29845:47:5"}]}}]},"documentation":{"id":4743,"nodeType":"StructuredDocumentation","src":"29377:307:5","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":4768,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:5","nodeType":"FunctionDefinition","parameters":{"id":4746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4745,"mutability":"mutable","name":"value","nameLocation":"29713:5:5","nodeType":"VariableDeclaration","scope":4768,"src":"29706:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4744,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:5"},"returnParameters":{"id":4749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4748,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:5","nodeType":"VariableDeclaration","scope":4768,"src":"29743:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":4747,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:5","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:5"},"scope":5017,"src":"29689:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4793,"nodeType":"Block","src":"30299:148:5","statements":[{"expression":{"id":4781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4776,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"30309:10:5","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4771,"src":"30328:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":4777,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:5","typeDescriptions":{}}},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:5","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":4782,"nodeType":"ExpressionStatement","src":"30309:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4783,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"30348:10:5","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4784,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4771,"src":"30362:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4792,"nodeType":"IfStatement","src":"30344:97:5","trueBody":{"id":4791,"nodeType":"Block","src":"30369:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":4787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:5","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":4788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4771,"src":"30424:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4786,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"30390:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4790,"nodeType":"RevertStatement","src":"30383:47:5"}]}}]},"documentation":{"id":4769,"nodeType":"StructuredDocumentation","src":"29915:307:5","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":4794,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:5","nodeType":"FunctionDefinition","parameters":{"id":4772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4771,"mutability":"mutable","name":"value","nameLocation":"30251:5:5","nodeType":"VariableDeclaration","scope":4794,"src":"30244:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4770,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:5"},"returnParameters":{"id":4775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4774,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:5","nodeType":"VariableDeclaration","scope":4794,"src":"30281:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":4773,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:5","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:5"},"scope":5017,"src":"30227:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4819,"nodeType":"Block","src":"30837:148:5","statements":[{"expression":{"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4802,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"30847:10:5","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4797,"src":"30866:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":4803,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:5","typeDescriptions":{}}},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:5","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":4808,"nodeType":"ExpressionStatement","src":"30847:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4809,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"30886:10:5","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4797,"src":"30900:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4818,"nodeType":"IfStatement","src":"30882:97:5","trueBody":{"id":4817,"nodeType":"Block","src":"30907:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":4813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:5","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":4814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4797,"src":"30962:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4812,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"30928:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4816,"nodeType":"RevertStatement","src":"30921:47:5"}]}}]},"documentation":{"id":4795,"nodeType":"StructuredDocumentation","src":"30453:307:5","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":4820,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:5","nodeType":"FunctionDefinition","parameters":{"id":4798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4797,"mutability":"mutable","name":"value","nameLocation":"30789:5:5","nodeType":"VariableDeclaration","scope":4820,"src":"30782:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4796,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:5"},"returnParameters":{"id":4801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4800,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:5","nodeType":"VariableDeclaration","scope":4820,"src":"30819:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":4799,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:5","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:5"},"scope":5017,"src":"30765:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4845,"nodeType":"Block","src":"31375:148:5","statements":[{"expression":{"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4828,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4826,"src":"31385:10:5","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4831,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4823,"src":"31404:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":4829,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:5","typeDescriptions":{}}},"id":4832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:5","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":4834,"nodeType":"ExpressionStatement","src":"31385:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4835,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4826,"src":"31424:10:5","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4823,"src":"31438:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4844,"nodeType":"IfStatement","src":"31420:97:5","trueBody":{"id":4843,"nodeType":"Block","src":"31445:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":4839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:5","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":4840,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4823,"src":"31500:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4838,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"31466:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4842,"nodeType":"RevertStatement","src":"31459:47:5"}]}}]},"documentation":{"id":4821,"nodeType":"StructuredDocumentation","src":"30991:307:5","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":4846,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:5","nodeType":"FunctionDefinition","parameters":{"id":4824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4823,"mutability":"mutable","name":"value","nameLocation":"31327:5:5","nodeType":"VariableDeclaration","scope":4846,"src":"31320:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4822,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:5"},"returnParameters":{"id":4827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4826,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:5","nodeType":"VariableDeclaration","scope":4846,"src":"31357:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":4825,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:5","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:5"},"scope":5017,"src":"31303:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4871,"nodeType":"Block","src":"31913:148:5","statements":[{"expression":{"id":4859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4854,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"31923:10:5","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"31942:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":4855,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:5","typeDescriptions":{}}},"id":4858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:5","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":4860,"nodeType":"ExpressionStatement","src":"31923:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4861,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"31962:10:5","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"31976:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4870,"nodeType":"IfStatement","src":"31958:97:5","trueBody":{"id":4869,"nodeType":"Block","src":"31983:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":4865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:5","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":4866,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"32038:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4864,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"32004:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4868,"nodeType":"RevertStatement","src":"31997:47:5"}]}}]},"documentation":{"id":4847,"nodeType":"StructuredDocumentation","src":"31529:307:5","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":4872,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:5","nodeType":"FunctionDefinition","parameters":{"id":4850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4849,"mutability":"mutable","name":"value","nameLocation":"31865:5:5","nodeType":"VariableDeclaration","scope":4872,"src":"31858:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4848,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:5"},"returnParameters":{"id":4853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4852,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:5","nodeType":"VariableDeclaration","scope":4872,"src":"31895:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":4851,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:5","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:5"},"scope":5017,"src":"31841:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4897,"nodeType":"Block","src":"32451:148:5","statements":[{"expression":{"id":4885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4880,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"32461:10:5","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4883,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4875,"src":"32480:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":4881,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:5","typeDescriptions":{}}},"id":4884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:5","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":4886,"nodeType":"ExpressionStatement","src":"32461:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4887,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"32500:10:5","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4888,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4875,"src":"32514:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4896,"nodeType":"IfStatement","src":"32496:97:5","trueBody":{"id":4895,"nodeType":"Block","src":"32521:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":4891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:5","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":4892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4875,"src":"32576:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4890,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"32542:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4894,"nodeType":"RevertStatement","src":"32535:47:5"}]}}]},"documentation":{"id":4873,"nodeType":"StructuredDocumentation","src":"32067:307:5","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":4898,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:5","nodeType":"FunctionDefinition","parameters":{"id":4876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4875,"mutability":"mutable","name":"value","nameLocation":"32403:5:5","nodeType":"VariableDeclaration","scope":4898,"src":"32396:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4874,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:5"},"returnParameters":{"id":4879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4878,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:5","nodeType":"VariableDeclaration","scope":4898,"src":"32433:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":4877,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:5","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:5"},"scope":5017,"src":"32379:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4923,"nodeType":"Block","src":"32989:148:5","statements":[{"expression":{"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4906,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4904,"src":"32999:10:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"33018:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":4907,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:5","typeDescriptions":{}}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4912,"nodeType":"ExpressionStatement","src":"32999:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4913,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4904,"src":"33038:10:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4914,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"33052:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4922,"nodeType":"IfStatement","src":"33034:97:5","trueBody":{"id":4921,"nodeType":"Block","src":"33059:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":4917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:5","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":4918,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"33114:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4916,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"33080:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4920,"nodeType":"RevertStatement","src":"33073:47:5"}]}}]},"documentation":{"id":4899,"nodeType":"StructuredDocumentation","src":"32605:307:5","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":4924,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:5","nodeType":"FunctionDefinition","parameters":{"id":4902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4901,"mutability":"mutable","name":"value","nameLocation":"32941:5:5","nodeType":"VariableDeclaration","scope":4924,"src":"32934:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4900,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:5"},"returnParameters":{"id":4905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4904,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:5","nodeType":"VariableDeclaration","scope":4924,"src":"32971:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4903,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:5"},"scope":5017,"src":"32917:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4949,"nodeType":"Block","src":"33527:148:5","statements":[{"expression":{"id":4937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4932,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4930,"src":"33537:10:5","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4935,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"33556:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":4933,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:5","typeDescriptions":{}}},"id":4936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:5","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":4938,"nodeType":"ExpressionStatement","src":"33537:25:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4939,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4930,"src":"33576:10:5","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4940,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"33590:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4948,"nodeType":"IfStatement","src":"33572:97:5","trueBody":{"id":4947,"nodeType":"Block","src":"33597:72:5","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":4943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:5","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":4944,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"33652:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4942,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"33618:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4946,"nodeType":"RevertStatement","src":"33611:47:5"}]}}]},"documentation":{"id":4925,"nodeType":"StructuredDocumentation","src":"33143:307:5","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":4950,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:5","nodeType":"FunctionDefinition","parameters":{"id":4928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4927,"mutability":"mutable","name":"value","nameLocation":"33479:5:5","nodeType":"VariableDeclaration","scope":4950,"src":"33472:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4926,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:5"},"returnParameters":{"id":4931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4930,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:5","nodeType":"VariableDeclaration","scope":4950,"src":"33509:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":4929,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:5","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:5"},"scope":5017,"src":"33455:220:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4975,"nodeType":"Block","src":"34058:146:5","statements":[{"expression":{"id":4963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4958,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"34068:10:5","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4961,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4953,"src":"34086:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":4959,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:5","typeDescriptions":{}}},"id":4962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:5","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":4964,"nodeType":"ExpressionStatement","src":"34068:24:5"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4965,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"34106:10:5","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4953,"src":"34120:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4974,"nodeType":"IfStatement","src":"34102:96:5","trueBody":{"id":4973,"nodeType":"Block","src":"34127:71:5","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":4969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:5","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":4970,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4953,"src":"34181:5:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4968,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"34148:29:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4972,"nodeType":"RevertStatement","src":"34141:46:5"}]}}]},"documentation":{"id":4951,"nodeType":"StructuredDocumentation","src":"33681:302:5","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":4976,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:5","nodeType":"FunctionDefinition","parameters":{"id":4954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4953,"mutability":"mutable","name":"value","nameLocation":"34011:5:5","nodeType":"VariableDeclaration","scope":4976,"src":"34004:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4952,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:5"},"returnParameters":{"id":4957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4956,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:5","nodeType":"VariableDeclaration","scope":4976,"src":"34041:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":4955,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:5","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:5"},"scope":5017,"src":"33988:216:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5005,"nodeType":"Block","src":"34444:250:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4984,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"34557:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":4989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4988,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":4987,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:5","memberName":"max","nodeType":"MemberAccess","src":"34573:16:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4985,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:5","typeDescriptions":{}}},"id":4992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4999,"nodeType":"IfStatement","src":"34553:105:5","trueBody":{"id":4998,"nodeType":"Block","src":"34592:66:5","statements":[{"errorCall":{"arguments":[{"id":4995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"34641:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4994,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3279,"src":"34613:27:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":4996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4997,"nodeType":"RevertStatement","src":"34606:41:5"}]}},{"expression":{"arguments":[{"id":5002,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"34681:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5000,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:5","typeDescriptions":{}}},"id":5003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4983,"id":5004,"nodeType":"Return","src":"34667:20:5"}]},"documentation":{"id":4977,"nodeType":"StructuredDocumentation","src":"34210:165:5","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":5006,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:5","nodeType":"FunctionDefinition","parameters":{"id":4980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4979,"mutability":"mutable","name":"value","nameLocation":"34406:5:5","nodeType":"VariableDeclaration","scope":5006,"src":"34398:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4978,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:5"},"returnParameters":{"id":4983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5006,"src":"34436:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4981,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:5"},"scope":5017,"src":"34380:314:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5015,"nodeType":"Block","src":"34853:87:5","statements":[{"AST":{"nativeSrc":"34888:46:5","nodeType":"YulBlock","src":"34888:46:5","statements":[{"nativeSrc":"34902:22:5","nodeType":"YulAssignment","src":"34902:22:5","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:5","nodeType":"YulIdentifier","src":"34921:1:5"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:5","nodeType":"YulIdentifier","src":"34914:6:5"},"nativeSrc":"34914:9:5","nodeType":"YulFunctionCall","src":"34914:9:5"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:5","nodeType":"YulIdentifier","src":"34907:6:5"},"nativeSrc":"34907:17:5","nodeType":"YulFunctionCall","src":"34907:17:5"},"variableNames":[{"name":"u","nativeSrc":"34902:1:5","nodeType":"YulIdentifier","src":"34902:1:5"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5009,"isOffset":false,"isSlot":false,"src":"34921:1:5","valueSize":1},{"declaration":5012,"isOffset":false,"isSlot":false,"src":"34902:1:5","valueSize":1}],"flags":["memory-safe"],"id":5014,"nodeType":"InlineAssembly","src":"34863:71:5"}]},"documentation":{"id":5007,"nodeType":"StructuredDocumentation","src":"34700:90:5","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":5016,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:5","nodeType":"FunctionDefinition","parameters":{"id":5010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5009,"mutability":"mutable","name":"b","nameLocation":"34816:1:5","nodeType":"VariableDeclaration","scope":5016,"src":"34811:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5008,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:5"},"returnParameters":{"id":5013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5012,"mutability":"mutable","name":"u","nameLocation":"34850:1:5","nodeType":"VariableDeclaration","scope":5016,"src":"34842:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5011,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:5"},"scope":5017,"src":"34795:145:5","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5018,"src":"769:34173:5","usedErrors":[3262,3267,3274,3279],"usedEvents":[]}],"src":"192:34751:5"},"id":5},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SafeCast":[5017],"SignedMath":[5161]},"id":5162,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5019,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:6"},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":5021,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5162,"sourceUnit":5018,"src":"135:40:6","symbolAliases":[{"foreign":{"id":5020,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"143:8:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":5022,"nodeType":"StructuredDocumentation","src":"177:80:6","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":5161,"linearizedBaseContracts":[5161],"name":"SignedMath","nameLocation":"266:10:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":5051,"nodeType":"Block","src":"746:215:6","statements":[{"id":5050,"nodeType":"UncheckedBlock","src":"756:199:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5034,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"894:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5035,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5027,"src":"900:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":5036,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"904:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"900:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"899:7:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"id":5043,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"932:9:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5041,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"916:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$5017_$","typeString":"type(library SafeCast)"}},"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:6:6","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":5016,"src":"916:15:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"909:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5039,"name":"int256","nodeType":"ElementaryTypeName","src":"909:6:6","typeDescriptions":{}}},"id":5045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"909:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"899:44:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"898:46:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"894:50:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5033,"id":5049,"nodeType":"Return","src":"887:57:6"}]}]},"documentation":{"id":5023,"nodeType":"StructuredDocumentation","src":"283:374:6","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":5052,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"671:7:6","nodeType":"FunctionDefinition","parameters":{"id":5030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5025,"mutability":"mutable","name":"condition","nameLocation":"684:9:6","nodeType":"VariableDeclaration","scope":5052,"src":"679:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5024,"name":"bool","nodeType":"ElementaryTypeName","src":"679:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5027,"mutability":"mutable","name":"a","nameLocation":"702:1:6","nodeType":"VariableDeclaration","scope":5052,"src":"695:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5026,"name":"int256","nodeType":"ElementaryTypeName","src":"695:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5029,"mutability":"mutable","name":"b","nameLocation":"712:1:6","nodeType":"VariableDeclaration","scope":5052,"src":"705:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5028,"name":"int256","nodeType":"ElementaryTypeName","src":"705:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"678:36:6"},"returnParameters":{"id":5033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5052,"src":"738:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5031,"name":"int256","nodeType":"ElementaryTypeName","src":"738:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"737:8:6"},"scope":5161,"src":"662:299:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5070,"nodeType":"Block","src":"1102:44:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5063,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"1127:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5064,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"1131:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1127:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5066,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"1134:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":5067,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"1137:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5062,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"1119:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5061,"id":5069,"nodeType":"Return","src":"1112:27:6"}]},"documentation":{"id":5053,"nodeType":"StructuredDocumentation","src":"967:66:6","text":" @dev Returns the largest of two signed numbers."},"id":5071,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"1047:3:6","nodeType":"FunctionDefinition","parameters":{"id":5058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5055,"mutability":"mutable","name":"a","nameLocation":"1058:1:6","nodeType":"VariableDeclaration","scope":5071,"src":"1051:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5054,"name":"int256","nodeType":"ElementaryTypeName","src":"1051:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5057,"mutability":"mutable","name":"b","nameLocation":"1068:1:6","nodeType":"VariableDeclaration","scope":5071,"src":"1061:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5056,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1050:20:6"},"returnParameters":{"id":5061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5071,"src":"1094:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5059,"name":"int256","nodeType":"ElementaryTypeName","src":"1094:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1093:8:6"},"scope":5161,"src":"1038:108:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5089,"nodeType":"Block","src":"1288:44:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5082,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"1313:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5083,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"1317:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1313:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5085,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"1320:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":5086,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"1323:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5081,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"1305:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5080,"id":5088,"nodeType":"Return","src":"1298:27:6"}]},"documentation":{"id":5072,"nodeType":"StructuredDocumentation","src":"1152:67:6","text":" @dev Returns the smallest of two signed numbers."},"id":5090,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"1233:3:6","nodeType":"FunctionDefinition","parameters":{"id":5077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5074,"mutability":"mutable","name":"a","nameLocation":"1244:1:6","nodeType":"VariableDeclaration","scope":5090,"src":"1237:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5073,"name":"int256","nodeType":"ElementaryTypeName","src":"1237:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5076,"mutability":"mutable","name":"b","nameLocation":"1254:1:6","nodeType":"VariableDeclaration","scope":5090,"src":"1247:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5075,"name":"int256","nodeType":"ElementaryTypeName","src":"1247:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1236:20:6"},"returnParameters":{"id":5080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5090,"src":"1280:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5078,"name":"int256","nodeType":"ElementaryTypeName","src":"1280:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1279:8:6"},"scope":5161,"src":"1224:108:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5133,"nodeType":"Block","src":"1537:162:6","statements":[{"assignments":[5101],"declarations":[{"constant":false,"id":5101,"mutability":"mutable","name":"x","nameLocation":"1606:1:6","nodeType":"VariableDeclaration","scope":5133,"src":"1599:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5100,"name":"int256","nodeType":"ElementaryTypeName","src":"1599:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5114,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5102,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5093,"src":"1611:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":5103,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5095,"src":"1615:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1611:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5105,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1610:7:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5093,"src":"1622:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":5107,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5095,"src":"1626:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1622:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1621:7:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":5110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1621:12:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1620:14:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1610:24:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1599:35:6"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5115,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"1651:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5120,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"1671:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1663:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:6","typeDescriptions":{}}},"id":5121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1663:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":5122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:3:6","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1663:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1656:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5116,"name":"int256","nodeType":"ElementaryTypeName","src":"1656:6:6","typeDescriptions":{}}},"id":5124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5125,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5093,"src":"1685:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":5126,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5095,"src":"1689:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1685:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1684:7:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1656:35:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1655:37:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1651:41:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5099,"id":5132,"nodeType":"Return","src":"1644:48:6"}]},"documentation":{"id":5091,"nodeType":"StructuredDocumentation","src":"1338:126:6","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":5134,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"1478:7:6","nodeType":"FunctionDefinition","parameters":{"id":5096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5093,"mutability":"mutable","name":"a","nameLocation":"1493:1:6","nodeType":"VariableDeclaration","scope":5134,"src":"1486:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5092,"name":"int256","nodeType":"ElementaryTypeName","src":"1486:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5095,"mutability":"mutable","name":"b","nameLocation":"1503:1:6","nodeType":"VariableDeclaration","scope":5134,"src":"1496:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5094,"name":"int256","nodeType":"ElementaryTypeName","src":"1496:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1485:20:6"},"returnParameters":{"id":5099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5134,"src":"1529:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5097,"name":"int256","nodeType":"ElementaryTypeName","src":"1529:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1528:8:6"},"scope":5161,"src":"1469:230:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5159,"nodeType":"Block","src":"1843:767:6","statements":[{"id":5158,"nodeType":"UncheckedBlock","src":"1853:751:6","statements":[{"assignments":[5143],"declarations":[{"constant":false,"id":5143,"mutability":"mutable","name":"mask","nameLocation":"2424:4:6","nodeType":"VariableDeclaration","scope":5158,"src":"2417:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5142,"name":"int256","nodeType":"ElementaryTypeName","src":"2417:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5147,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5144,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5137,"src":"2431:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":5145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2436:3:6","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2431:8:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2417:22:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5150,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5137,"src":"2576:1:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5151,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5143,"src":"2580:4:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2576:8:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5153,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2575:10:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":5154,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5143,"src":"2588:4:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2575:17:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:6","typeDescriptions":{}}},"id":5156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2567:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5141,"id":5157,"nodeType":"Return","src":"2560:33:6"}]}]},"documentation":{"id":5135,"nodeType":"StructuredDocumentation","src":"1705:78:6","text":" @dev Returns the absolute unsigned value of a signed value."},"id":5160,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1797:3:6","nodeType":"FunctionDefinition","parameters":{"id":5138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5137,"mutability":"mutable","name":"n","nameLocation":"1808:1:6","nodeType":"VariableDeclaration","scope":5160,"src":"1801:8:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5136,"name":"int256","nodeType":"ElementaryTypeName","src":"1801:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1800:10:6"},"returnParameters":{"id":5141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5160,"src":"1834:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5139,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:9:6"},"scope":5161,"src":"1788:822:6","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5162,"src":"258:2354:6","usedErrors":[],"usedEvents":[]}],"src":"109:2504:6"},"id":6},"contracts/ExampleSupplyChain.sol":{"ast":{"absolutePath":"contracts/ExampleSupplyChain.sol","exportedSymbols":{"Context":[177],"ExampleSupplyChain":[5389],"Math":[3252],"Ownable":[147],"SafeCast":[5017],"SignedMath":[5161],"Strings":[1631]},"id":5390,"license":"FSL-1.1-MIT","nodeType":"SourceUnit","nodes":[{"id":5163,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"40:24:7"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":5164,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5390,"sourceUnit":148,"src":"66:52:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":5165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5390,"sourceUnit":1632,"src":"119:51:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5166,"name":"Ownable","nameLocations":["203:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":147,"src":"203:7:7"},"id":5167,"nodeType":"InheritanceSpecifier","src":"203:7:7"}],"canonicalName":"ExampleSupplyChain","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5389,"linearizedBaseContracts":[5389,147,177],"name":"ExampleSupplyChain","nameLocation":"181:18:7","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"34687fc5","id":5169,"mutability":"mutable","name":"_firstProcessLotId","nameLocation":"445:18:7","nodeType":"VariableDeclaration","scope":5389,"src":"430:33:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5168,"name":"uint256","nodeType":"ElementaryTypeName","src":"430:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"386a0d26","id":5171,"mutability":"mutable","name":"_secondProcessLotId","nameLocation":"484:19:7","nodeType":"VariableDeclaration","scope":5389,"src":"469:34:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5170,"name":"uint256","nodeType":"ElementaryTypeName","src":"469:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"7b844d86","id":5173,"mutability":"mutable","name":"_packingLotId","nameLocation":"524:13:7","nodeType":"VariableDeclaration","scope":5389,"src":"509:28:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5172,"name":"uint256","nodeType":"ElementaryTypeName","src":"509:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"f342554c","id":5175,"mutability":"mutable","name":"_transportLotId","nameLocation":"558:15:7","nodeType":"VariableDeclaration","scope":5389,"src":"543:30:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5174,"name":"uint256","nodeType":"ElementaryTypeName","src":"543:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"anonymous":false,"eventSelector":"8982a390c0fb1688e369d1ab91e529cae84e472205007ac93be646ec121f9410","id":5189,"name":"CreateLotEvent","nameLocation":"799:14:7","nodeType":"EventDefinition","parameters":{"id":5188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5177,"indexed":false,"mutability":"mutable","name":"lotType","nameLocation":"830:7:7","nodeType":"VariableDeclaration","scope":5189,"src":"823:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5176,"name":"string","nodeType":"ElementaryTypeName","src":"823:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5179,"indexed":false,"mutability":"mutable","name":"quantity","nameLocation":"846:8:7","nodeType":"VariableDeclaration","scope":5189,"src":"839:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5178,"name":"string","nodeType":"ElementaryTypeName","src":"839:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5181,"indexed":false,"mutability":"mutable","name":"operatorId","nameLocation":"863:10:7","nodeType":"VariableDeclaration","scope":5189,"src":"856:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5180,"name":"string","nodeType":"ElementaryTypeName","src":"856:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5183,"indexed":false,"mutability":"mutable","name":"originId","nameLocation":"882:8:7","nodeType":"VariableDeclaration","scope":5189,"src":"875:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5182,"name":"string","nodeType":"ElementaryTypeName","src":"875:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5185,"indexed":false,"mutability":"mutable","name":"lotNo","nameLocation":"899:5:7","nodeType":"VariableDeclaration","scope":5189,"src":"892:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5184,"name":"string","nodeType":"ElementaryTypeName","src":"892:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5187,"indexed":false,"mutability":"mutable","name":"transporterId","nameLocation":"913:13:7","nodeType":"VariableDeclaration","scope":5189,"src":"906:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5186,"name":"string","nodeType":"ElementaryTypeName","src":"906:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"813:119:7"},"src":"793:140:7"},{"anonymous":false,"eventSelector":"d494bd9dcaeef0e3e0fd19a0b13af05abf8ca5ffd5e70724ed987b2fcfa443d3","id":5203,"name":"FirstProcessEvent","nameLocation":"945:17:7","nodeType":"EventDefinition","parameters":{"id":5202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5191,"indexed":false,"mutability":"mutable","name":"lotNos","nameLocation":"979:6:7","nodeType":"VariableDeclaration","scope":5203,"src":"972:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5190,"name":"string","nodeType":"ElementaryTypeName","src":"972:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5193,"indexed":false,"mutability":"mutable","name":"operatorId","nameLocation":"1002:10:7","nodeType":"VariableDeclaration","scope":5203,"src":"995:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5192,"name":"string","nodeType":"ElementaryTypeName","src":"995:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5195,"indexed":false,"mutability":"mutable","name":"machineId","nameLocation":"1029:9:7","nodeType":"VariableDeclaration","scope":5203,"src":"1022:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5194,"name":"string","nodeType":"ElementaryTypeName","src":"1022:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5197,"indexed":false,"mutability":"mutable","name":"processingHouseId","nameLocation":"1055:17:7","nodeType":"VariableDeclaration","scope":5203,"src":"1048:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5196,"name":"string","nodeType":"ElementaryTypeName","src":"1048:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5199,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"1089:9:7","nodeType":"VariableDeclaration","scope":5203,"src":"1082:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5198,"name":"string","nodeType":"ElementaryTypeName","src":"1082:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5201,"indexed":false,"mutability":"mutable","name":"firstProcessLotId","nameLocation":"1115:17:7","nodeType":"VariableDeclaration","scope":5203,"src":"1108:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5200,"name":"string","nodeType":"ElementaryTypeName","src":"1108:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"962:176:7"},"src":"939:200:7"},{"anonymous":false,"eventSelector":"14b6c7296a7ef1f1d61274d04d7364309a7a32fbb21087fb4c15a5d1534ac899","id":5215,"name":"SecondProcessEvent","nameLocation":"1151:18:7","nodeType":"EventDefinition","parameters":{"id":5214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5205,"indexed":false,"mutability":"mutable","name":"firstProcessLotIds","nameLocation":"1186:18:7","nodeType":"VariableDeclaration","scope":5215,"src":"1179:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5204,"name":"string","nodeType":"ElementaryTypeName","src":"1179:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5207,"indexed":false,"mutability":"mutable","name":"machineId","nameLocation":"1221:9:7","nodeType":"VariableDeclaration","scope":5215,"src":"1214:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5206,"name":"string","nodeType":"ElementaryTypeName","src":"1214:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5209,"indexed":false,"mutability":"mutable","name":"operatorId","nameLocation":"1247:10:7","nodeType":"VariableDeclaration","scope":5215,"src":"1240:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5208,"name":"string","nodeType":"ElementaryTypeName","src":"1240:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5211,"indexed":false,"mutability":"mutable","name":"secondProcessOutputLotId","nameLocation":"1274:24:7","nodeType":"VariableDeclaration","scope":5215,"src":"1267:31:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5210,"name":"string","nodeType":"ElementaryTypeName","src":"1267:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5213,"indexed":false,"mutability":"mutable","name":"secondProcessLotId","nameLocation":"1315:18:7","nodeType":"VariableDeclaration","scope":5215,"src":"1308:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5212,"name":"string","nodeType":"ElementaryTypeName","src":"1308:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1169:170:7"},"src":"1145:195:7"},{"anonymous":false,"eventSelector":"c779766e64dba61c56c17693faa61ae802bcdc203a1479bfb4970edd3ab7e64f","id":5229,"name":"PackagingEvent","nameLocation":"1352:14:7","nodeType":"EventDefinition","parameters":{"id":5228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5217,"indexed":false,"mutability":"mutable","name":"secondProcessLotId","nameLocation":"1383:18:7","nodeType":"VariableDeclaration","scope":5229,"src":"1376:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5216,"name":"string","nodeType":"ElementaryTypeName","src":"1376:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5219,"indexed":false,"mutability":"mutable","name":"operatorId","nameLocation":"1418:10:7","nodeType":"VariableDeclaration","scope":5229,"src":"1411:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5218,"name":"string","nodeType":"ElementaryTypeName","src":"1411:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5221,"indexed":false,"mutability":"mutable","name":"packageId","nameLocation":"1445:9:7","nodeType":"VariableDeclaration","scope":5229,"src":"1438:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5220,"name":"string","nodeType":"ElementaryTypeName","src":"1438:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5223,"indexed":false,"mutability":"mutable","name":"weight","nameLocation":"1471:6:7","nodeType":"VariableDeclaration","scope":5229,"src":"1464:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5222,"name":"string","nodeType":"ElementaryTypeName","src":"1464:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5225,"indexed":false,"mutability":"mutable","name":"packagingType","nameLocation":"1494:13:7","nodeType":"VariableDeclaration","scope":5229,"src":"1487:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5224,"name":"string","nodeType":"ElementaryTypeName","src":"1487:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5227,"indexed":false,"mutability":"mutable","name":"packingLotId","nameLocation":"1524:12:7","nodeType":"VariableDeclaration","scope":5229,"src":"1517:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5226,"name":"string","nodeType":"ElementaryTypeName","src":"1517:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1366:176:7"},"src":"1346:197:7"},{"anonymous":false,"eventSelector":"5a6ec825b52239f3c530cc18dca698150d270962d2021703403dcd6815b1af61","id":5241,"name":"TransportEvent","nameLocation":"1555:14:7","nodeType":"EventDefinition","parameters":{"id":5240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5231,"indexed":false,"mutability":"mutable","name":"packageId","nameLocation":"1586:9:7","nodeType":"VariableDeclaration","scope":5241,"src":"1579:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5230,"name":"string","nodeType":"ElementaryTypeName","src":"1579:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5233,"indexed":false,"mutability":"mutable","name":"operatorId","nameLocation":"1604:10:7","nodeType":"VariableDeclaration","scope":5241,"src":"1597:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5232,"name":"string","nodeType":"ElementaryTypeName","src":"1597:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5235,"indexed":false,"mutability":"mutable","name":"transporterId","nameLocation":"1623:13:7","nodeType":"VariableDeclaration","scope":5241,"src":"1616:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5234,"name":"string","nodeType":"ElementaryTypeName","src":"1616:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5237,"indexed":false,"mutability":"mutable","name":"cartonId","nameLocation":"1645:8:7","nodeType":"VariableDeclaration","scope":5241,"src":"1638:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5236,"name":"string","nodeType":"ElementaryTypeName","src":"1638:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5239,"indexed":false,"mutability":"mutable","name":"transportLotId","nameLocation":"1662:14:7","nodeType":"VariableDeclaration","scope":5241,"src":"1655:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5238,"name":"string","nodeType":"ElementaryTypeName","src":"1655:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1569:113:7"},"src":"1549:134:7"},{"body":{"id":5248,"nodeType":"Block","src":"1936:70:7","statements":[]},"id":5249,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":5244,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1924:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1928:6:7","memberName":"sender","nodeType":"MemberAccess","src":"1924:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5246,"kind":"baseConstructorSpecifier","modifierName":{"id":5243,"name":"Ownable","nameLocations":["1916:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":147,"src":"1916:7:7"},"nodeType":"ModifierInvocation","src":"1916:19:7"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5242,"nodeType":"ParameterList","parameters":[],"src":"1913:2:7"},"returnParameters":{"id":5247,"nodeType":"ParameterList","parameters":[],"src":"1936:0:7"},"scope":5389,"src":"1902:104:7","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5273,"nodeType":"Block","src":"2466:99:7","statements":[{"eventCall":{"arguments":[{"id":5265,"name":"lotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5251,"src":"2496:7:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5266,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5253,"src":"2505:8:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5267,"name":"operatorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5255,"src":"2515:10:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5268,"name":"originId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"2527:8:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5269,"name":"lotNo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5259,"src":"2537:5:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5270,"name":"transporterId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5261,"src":"2544:13:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5264,"name":"CreateLotEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5189,"src":"2481:14:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,string memory,string memory,string memory,string memory)"}},"id":5271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2481:77:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5272,"nodeType":"EmitStatement","src":"2476:82:7"}]},"functionSelector":"c57397ec","id":5274,"implemented":true,"kind":"function","modifiers":[],"name":"createLot","nameLocation":"2234:9:7","nodeType":"FunctionDefinition","parameters":{"id":5262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5251,"mutability":"mutable","name":"lotType","nameLocation":"2267:7:7","nodeType":"VariableDeclaration","scope":5274,"src":"2253:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5250,"name":"string","nodeType":"ElementaryTypeName","src":"2253:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5253,"mutability":"mutable","name":"quantity","nameLocation":"2298:8:7","nodeType":"VariableDeclaration","scope":5274,"src":"2284:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5252,"name":"string","nodeType":"ElementaryTypeName","src":"2284:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5255,"mutability":"mutable","name":"operatorId","nameLocation":"2330:10:7","nodeType":"VariableDeclaration","scope":5274,"src":"2316:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5254,"name":"string","nodeType":"ElementaryTypeName","src":"2316:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5257,"mutability":"mutable","name":"originId","nameLocation":"2364:8:7","nodeType":"VariableDeclaration","scope":5274,"src":"2350:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5256,"name":"string","nodeType":"ElementaryTypeName","src":"2350:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5259,"mutability":"mutable","name":"lotNo","nameLocation":"2396:5:7","nodeType":"VariableDeclaration","scope":5274,"src":"2382:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5258,"name":"string","nodeType":"ElementaryTypeName","src":"2382:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5261,"mutability":"mutable","name":"transporterId","nameLocation":"2425:13:7","nodeType":"VariableDeclaration","scope":5274,"src":"2411:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5260,"name":"string","nodeType":"ElementaryTypeName","src":"2411:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2243:201:7"},"returnParameters":{"id":5263,"nodeType":"ParameterList","parameters":[],"src":"2466:0:7"},"scope":5389,"src":"2225:340:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5303,"nodeType":"Block","src":"2799:194:7","statements":[{"expression":{"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5287,"name":"_firstProcessLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"2809:18:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2831:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2809:23:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5290,"nodeType":"ExpressionStatement","src":"2809:23:7"},{"eventCall":{"arguments":[{"id":5292,"name":"lotNos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5276,"src":"2879:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5293,"name":"operatorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5278,"src":"2887:10:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5294,"name":"machineId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5280,"src":"2899:9:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5295,"name":"processingHouseId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5282,"src":"2910:17:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5296,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5284,"src":"2929:9:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":5299,"name":"_firstProcessLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"2957:18:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5297,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"2940:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1631_$","typeString":"type(library Strings)"}},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2948:8:7","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":343,"src":"2940:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":5300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2940:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5291,"name":"FirstProcessEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5203,"src":"2848:17:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,string memory,string memory,string memory,string memory)"}},"id":5301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2848:138:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5302,"nodeType":"EmitStatement","src":"2843:143:7"}]},"functionSelector":"ad2f19f3","id":5304,"implemented":true,"kind":"function","modifiers":[],"name":"registerFirstProcess","nameLocation":"2580:20:7","nodeType":"FunctionDefinition","parameters":{"id":5285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5276,"mutability":"mutable","name":"lotNos","nameLocation":"2624:6:7","nodeType":"VariableDeclaration","scope":5304,"src":"2610:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5275,"name":"string","nodeType":"ElementaryTypeName","src":"2610:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5278,"mutability":"mutable","name":"operatorId","nameLocation":"2654:10:7","nodeType":"VariableDeclaration","scope":5304,"src":"2640:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5277,"name":"string","nodeType":"ElementaryTypeName","src":"2640:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5280,"mutability":"mutable","name":"machineId","nameLocation":"2688:9:7","nodeType":"VariableDeclaration","scope":5304,"src":"2674:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5279,"name":"string","nodeType":"ElementaryTypeName","src":"2674:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5282,"mutability":"mutable","name":"processingHouseId","nameLocation":"2721:17:7","nodeType":"VariableDeclaration","scope":5304,"src":"2707:31:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5281,"name":"string","nodeType":"ElementaryTypeName","src":"2707:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5284,"mutability":"mutable","name":"timestamp","nameLocation":"2762:9:7","nodeType":"VariableDeclaration","scope":5304,"src":"2748:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5283,"name":"string","nodeType":"ElementaryTypeName","src":"2748:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2600:177:7"},"returnParameters":{"id":5286,"nodeType":"ParameterList","parameters":[],"src":"2799:0:7"},"scope":5389,"src":"2571:422:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5330,"nodeType":"Block","src":"3214:205:7","statements":[{"expression":{"id":5317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5315,"name":"_secondProcessLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"3224:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3247:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3224:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5318,"nodeType":"ExpressionStatement","src":"3224:24:7"},{"eventCall":{"arguments":[{"id":5320,"name":"firstProcessLotIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"3296:18:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5321,"name":"machineId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5308,"src":"3316:9:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5322,"name":"operatorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5310,"src":"3327:10:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5323,"name":"secondProcessOutputLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5312,"src":"3339:24:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":5326,"name":"_secondProcessLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"3382:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5324,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"3365:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1631_$","typeString":"type(library Strings)"}},"id":5325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3373:8:7","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":343,"src":"3365:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":5327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3365:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5319,"name":"SecondProcessEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"3264:18:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,string memory,string memory,string memory)"}},"id":5328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3264:148:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5329,"nodeType":"EmitStatement","src":"3259:153:7"}]},"functionSelector":"e5dbd1ae","id":5331,"implemented":true,"kind":"function","modifiers":[],"name":"registerSecondProcess","nameLocation":"3008:21:7","nodeType":"FunctionDefinition","parameters":{"id":5313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5306,"mutability":"mutable","name":"firstProcessLotIds","nameLocation":"3053:18:7","nodeType":"VariableDeclaration","scope":5331,"src":"3039:32:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5305,"name":"string","nodeType":"ElementaryTypeName","src":"3039:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5308,"mutability":"mutable","name":"machineId","nameLocation":"3095:9:7","nodeType":"VariableDeclaration","scope":5331,"src":"3081:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5307,"name":"string","nodeType":"ElementaryTypeName","src":"3081:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5310,"mutability":"mutable","name":"operatorId","nameLocation":"3128:10:7","nodeType":"VariableDeclaration","scope":5331,"src":"3114:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5309,"name":"string","nodeType":"ElementaryTypeName","src":"3114:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5312,"mutability":"mutable","name":"secondProcessOutputLotId","nameLocation":"3162:24:7","nodeType":"VariableDeclaration","scope":5331,"src":"3148:38:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5311,"name":"string","nodeType":"ElementaryTypeName","src":"3148:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3029:163:7"},"returnParameters":{"id":5314,"nodeType":"ParameterList","parameters":[],"src":"3214:0:7"},"scope":5389,"src":"2999:420:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5360,"nodeType":"Block","src":"3645:186:7","statements":[{"expression":{"id":5346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5344,"name":"_packingLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"3655:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3672:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3655:18:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5347,"nodeType":"ExpressionStatement","src":"3655:18:7"},{"eventCall":{"arguments":[{"id":5349,"name":"secondProcessLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"3717:18:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5350,"name":"operatorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5335,"src":"3737:10:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5351,"name":"packageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5337,"src":"3749:9:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5352,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"3760:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5353,"name":"packagingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"3768:13:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":5356,"name":"_packingLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"3800:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5354,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"3783:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1631_$","typeString":"type(library Strings)"}},"id":5355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3791:8:7","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":343,"src":"3783:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":5357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3783:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5348,"name":"PackagingEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5229,"src":"3689:14:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,string memory,string memory,string memory,string memory)"}},"id":5358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3689:135:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5359,"nodeType":"EmitStatement","src":"3684:140:7"}]},"functionSelector":"e3232810","id":5361,"implemented":true,"kind":"function","modifiers":[],"name":"packing","nameLocation":"3434:7:7","nodeType":"FunctionDefinition","parameters":{"id":5342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5333,"mutability":"mutable","name":"secondProcessLotId","nameLocation":"3465:18:7","nodeType":"VariableDeclaration","scope":5361,"src":"3451:32:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5332,"name":"string","nodeType":"ElementaryTypeName","src":"3451:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5335,"mutability":"mutable","name":"operatorId","nameLocation":"3507:10:7","nodeType":"VariableDeclaration","scope":5361,"src":"3493:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5334,"name":"string","nodeType":"ElementaryTypeName","src":"3493:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5337,"mutability":"mutable","name":"packageId","nameLocation":"3541:9:7","nodeType":"VariableDeclaration","scope":5361,"src":"3527:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5336,"name":"string","nodeType":"ElementaryTypeName","src":"3527:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5339,"mutability":"mutable","name":"weight","nameLocation":"3574:6:7","nodeType":"VariableDeclaration","scope":5361,"src":"3560:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5338,"name":"string","nodeType":"ElementaryTypeName","src":"3560:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5341,"mutability":"mutable","name":"packagingType","nameLocation":"3604:13:7","nodeType":"VariableDeclaration","scope":5361,"src":"3590:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5340,"name":"string","nodeType":"ElementaryTypeName","src":"3590:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3441:182:7"},"returnParameters":{"id":5343,"nodeType":"ParameterList","parameters":[],"src":"3645:0:7"},"scope":5389,"src":"3425:406:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5387,"nodeType":"Block","src":"4019:150:7","statements":[{"expression":{"id":5374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5372,"name":"_transportLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"4029:15:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4048:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4029:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5375,"nodeType":"ExpressionStatement","src":"4029:20:7"},{"eventCall":{"arguments":[{"id":5377,"name":"packageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"4080:9:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5378,"name":"operatorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"4091:10:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5379,"name":"transporterId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5367,"src":"4103:13:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5380,"name":"cartonId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5369,"src":"4118:8:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":5383,"name":"_transportLotId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"4145:15:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5381,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"4128:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1631_$","typeString":"type(library Strings)"}},"id":5382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4136:8:7","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":343,"src":"4128:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":5384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4128:33:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5376,"name":"TransportEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"4065:14:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,string memory,string memory,string memory)"}},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:97:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5386,"nodeType":"EmitStatement","src":"4060:102:7"}]},"functionSelector":"ac366bc6","id":5388,"implemented":true,"kind":"function","modifiers":[],"name":"transport","nameLocation":"3846:9:7","nodeType":"FunctionDefinition","parameters":{"id":5370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5363,"mutability":"mutable","name":"packageId","nameLocation":"3879:9:7","nodeType":"VariableDeclaration","scope":5388,"src":"3865:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5362,"name":"string","nodeType":"ElementaryTypeName","src":"3865:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5365,"mutability":"mutable","name":"operatorId","nameLocation":"3912:10:7","nodeType":"VariableDeclaration","scope":5388,"src":"3898:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5364,"name":"string","nodeType":"ElementaryTypeName","src":"3898:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5367,"mutability":"mutable","name":"transporterId","nameLocation":"3946:13:7","nodeType":"VariableDeclaration","scope":5388,"src":"3932:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5366,"name":"string","nodeType":"ElementaryTypeName","src":"3932:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5369,"mutability":"mutable","name":"cartonId","nameLocation":"3983:8:7","nodeType":"VariableDeclaration","scope":5388,"src":"3969:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5368,"name":"string","nodeType":"ElementaryTypeName","src":"3969:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3855:142:7"},"returnParameters":{"id":5371,"nodeType":"ParameterList","parameters":[],"src":"4019:0:7"},"scope":5389,"src":"3837:332:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5390,"src":"172:3999:7","usedErrors":[13,18],"usedEvents":[24,5189,5203,5215,5229,5241]}],"src":"40:4132:7"},"id":7}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220143276c299ef99b30f87321917f9c70e0a68ee8e92da66a73093b560eb7b741664736f6c634300081e0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ ORIGIN PUSH23 0xC299EF99B30F87321917F9C70E0A68EE8E92DA66A73093 0xB5 PUSH1 0xEB PUSH28 0x741664736F6C634300081E0033000000000000000000000000000000 ","sourceMap":"657:1315:2:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220143276c299ef99b30f87321917f9c70e0a68ee8e92da66a73093b560eb7b741664736f6c634300081e0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ ORIGIN PUSH23 0xC299EF99B30F87321917F9C70E0A68EE8E92DA66A73093 0xB5 PUSH1 0xEB PUSH28 0x741664736F6C634300081E0033000000000000000000000000000000 ","sourceMap":"657:1315:2:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example {      using Panic for uint256;      // Use any of the declared internal constants      function foo() { Panic.GENERIC.panic(); }      // Alternatively      function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"},{"inputs":[],"name":"StringsInvalidAddressFormat","type":"error"},{"inputs":[],"name":"StringsInvalidChar","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220bf6c1ae1d3708fa06684ccbd35f7a7d47c3d32fd089cec2c8123b3b07555bad764736f6c634300081e0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF PUSH13 0x1AE1D3708FA06684CCBD35F7A7 0xD4 PUSH29 0x3D32FD089CEC2C8123B3B07555BAD764736F6C634300081E0033000000 ","sourceMap":"297:18982:3:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220bf6c1ae1d3708fa06684ccbd35f7a7d47c3d32fd089cec2c8123b3b07555bad764736f6c634300081e0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF PUSH13 0x1AE1D3708FA06684CCBD35F7A7 0xD4 PUSH29 0x3D32FD089CEC2C8123B3B07555BAD764736F6C634300081E0033000000 ","sourceMap":"297:18982:3:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidAddressFormat\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidChar\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}],\"StringsInvalidAddressFormat()\":[{\"details\":\"The string being parsed is not a properly formatted address.\"}],\"StringsInvalidChar()\":[{\"details\":\"The string being parsed contains characters that are not in scope of the given base.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212206d9c4cc57e6476087652930f20fc3271e7b7a32f744fbd9edeef1f9cbdd1939b64736f6c634300081e0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x9C4CC57E6476087652930F20FC32 PUSH18 0xE7B7A32F744FBD9EDEEF1F9CBDD1939B6473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"281:31863:4:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212206d9c4cc57e6476087652930f20fc3271e7b7a32f744fbd9edeef1f9cbdd1939b64736f6c634300081e0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x9C4CC57E6476087652930F20FC32 PUSH18 0xE7B7A32F744FBD9EDEEF1F9CBDD1939B6473 PUSH16 0x6C634300081E00330000000000000000 ","sourceMap":"281:31863:4:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220e85b79f357f3f48cba3aade06d82d57ab1561dbffede2d19c9854aa12d9007c264736f6c634300081e0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 JUMPDEST PUSH26 0xF357F3F48CBA3AADE06D82D57AB1561DBFFEDE2D19C9854AA12D SWAP1 SMOD 0xC2 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"769:34173:5:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220e85b79f357f3f48cba3aade06d82d57ab1561dbffede2d19c9854aa12d9007c264736f6c634300081e0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 JUMPDEST PUSH26 0xF357F3F48CBA3AADE06D82D57AB1561DBFFEDE2D19C9854AA12D SWAP1 SMOD 0xC2 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"769:34173:5:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such 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.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122002e2404394974e22f511a36e92631442ccebfdb33cf9c8f3426325f6fae8d58164736f6c634300081e0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL 0xE2 BLOCKHASH NUMBER SWAP5 SWAP8 0x4E 0x22 CREATE2 GT LOG3 PUSH15 0x92631442CCEBFDB33CF9C8F3426325 0xF6 STATICCALL 0xE8 0xD5 DUP2 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"258:2354:6:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122002e2404394974e22f511a36e92631442ccebfdb33cf9c8f3426325f6fae8d58164736f6c634300081e0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL 0xE2 BLOCKHASH NUMBER SWAP5 SWAP8 0x4E 0x22 CREATE2 GT LOG3 PUSH15 0x92631442CCEBFDB33CF9C8F3426325 0xF6 STATICCALL 0xE8 0xD5 DUP2 PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ","sourceMap":"258:2354:6:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"}},"contracts/ExampleSupplyChain.sol":{"ExampleSupplyChain":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"lotType","type":"string"},{"indexed":false,"internalType":"string","name":"quantity","type":"string"},{"indexed":false,"internalType":"string","name":"operatorId","type":"string"},{"indexed":false,"internalType":"string","name":"originId","type":"string"},{"indexed":false,"internalType":"string","name":"lotNo","type":"string"},{"indexed":false,"internalType":"string","name":"transporterId","type":"string"}],"name":"CreateLotEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"lotNos","type":"string"},{"indexed":false,"internalType":"string","name":"operatorId","type":"string"},{"indexed":false,"internalType":"string","name":"machineId","type":"string"},{"indexed":false,"internalType":"string","name":"processingHouseId","type":"string"},{"indexed":false,"internalType":"string","name":"timestamp","type":"string"},{"indexed":false,"internalType":"string","name":"firstProcessLotId","type":"string"}],"name":"FirstProcessEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"secondProcessLotId","type":"string"},{"indexed":false,"internalType":"string","name":"operatorId","type":"string"},{"indexed":false,"internalType":"string","name":"packageId","type":"string"},{"indexed":false,"internalType":"string","name":"weight","type":"string"},{"indexed":false,"internalType":"string","name":"packagingType","type":"string"},{"indexed":false,"internalType":"string","name":"packingLotId","type":"string"}],"name":"PackagingEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"firstProcessLotIds","type":"string"},{"indexed":false,"internalType":"string","name":"machineId","type":"string"},{"indexed":false,"internalType":"string","name":"operatorId","type":"string"},{"indexed":false,"internalType":"string","name":"secondProcessOutputLotId","type":"string"},{"indexed":false,"internalType":"string","name":"secondProcessLotId","type":"string"}],"name":"SecondProcessEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"packageId","type":"string"},{"indexed":false,"internalType":"string","name":"operatorId","type":"string"},{"indexed":false,"internalType":"string","name":"transporterId","type":"string"},{"indexed":false,"internalType":"string","name":"cartonId","type":"string"},{"indexed":false,"internalType":"string","name":"transportLotId","type":"string"}],"name":"TransportEvent","type":"event"},{"inputs":[],"name":"_firstProcessLotId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_packingLotId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_secondProcessLotId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transportLotId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"lotType","type":"string"},{"internalType":"string","name":"quantity","type":"string"},{"internalType":"string","name":"operatorId","type":"string"},{"internalType":"string","name":"originId","type":"string"},{"internalType":"string","name":"lotNo","type":"string"},{"internalType":"string","name":"transporterId","type":"string"}],"name":"createLot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"secondProcessLotId","type":"string"},{"internalType":"string","name":"operatorId","type":"string"},{"internalType":"string","name":"packageId","type":"string"},{"internalType":"string","name":"weight","type":"string"},{"internalType":"string","name":"packagingType","type":"string"}],"name":"packing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lotNos","type":"string"},{"internalType":"string","name":"operatorId","type":"string"},{"internalType":"string","name":"machineId","type":"string"},{"internalType":"string","name":"processingHouseId","type":"string"},{"internalType":"string","name":"timestamp","type":"string"}],"name":"registerFirstProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"firstProcessLotIds","type":"string"},{"internalType":"string","name":"machineId","type":"string"},{"internalType":"string","name":"operatorId","type":"string"},{"internalType":"string","name":"secondProcessOutputLotId","type":"string"}],"name":"registerSecondProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"packageId","type":"string"},{"internalType":"string","name":"operatorId","type":"string"},{"internalType":"string","name":"transporterId","type":"string"},{"internalType":"string","name":"cartonId","type":"string"}],"name":"transport","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608080604052346071573315605e575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36108fa90816100768239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816334687fc51461046f57508063386a0d2614610452578063715018a6146103fb5780637b844d86146103de5780638da5cb5b146103b7578063ac366bc614610366578063ad2f19f314610314578063c57397ec14610220578063e3232810146101c1578063e5dbd1ae1461014a578063f2fde38b146100c15763f342554c146100a0575f80fd5b346100bd575f3660031901126100bd576020600454604051908152f35b5f80fd5b346100bd5760203660031901126100bd576004356001600160a01b038116908190036100bd576100ef61073b565b8015610137575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b346100bd576101583661051e565b929060025490600182018092116101ad577f14b6c7296a7ef1f1d61274d04d7364309a7a32fbb21087fb4c15a5d1534ac8999461019b836101a894600255610761565b9160405195869586610673565b0390a1005b634e487b7160e01b5f52601160045260245ffd5b346100bd576101cf366105a9565b90939160035491600183018093116101ad577fc779766e64dba61c56c17693faa61ae802bcdc203a1479bfb4970edd3ab7e64f95610213846101a895600355610761565b92604051968796876106ce565b346100bd5760c03660031901126100bd576004356001600160401b0381116100bd576102509036906004016104dd565b6024356001600160401b0381116100bd5761026f9036906004016104dd565b6044356001600160401b0381116100bd5761028e9036906004016104dd565b916064356001600160401b0381116100bd576102ae9036906004016104dd565b926084356001600160401b0381116100bd576102ce9036906004016104dd565b9060a435916001600160401b0383116100bd577f8982a390c0fb1688e369d1ab91e529cae84e472205007ac93be646ec121f9410956102136101a89436906004016104dd565b346100bd57610322366105a9565b90939160015491600183018093116101ad577fd494bd9dcaeef0e3e0fd19a0b13af05abf8ca5ffd5e70724ed987b2fcfa443d395610213846101a895600155610761565b346100bd576103743661051e565b929060045490600182018092116101ad577f5a6ec825b52239f3c530cc18dca698150d270962d2021703403dcd6815b1af619461019b836101a894600455610761565b346100bd575f3660031901126100bd575f546040516001600160a01b039091168152602090f35b346100bd575f3660031901126100bd576020600354604051908152f35b346100bd575f3660031901126100bd5761041361073b565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100bd575f3660031901126100bd576020600254604051908152f35b346100bd575f3660031901126100bd576020906001548152f35b6040519190601f01601f191682016001600160401b038111838210176104ae57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381116104ae57601f01601f191660200190565b81601f820112156100bd578035906104fc6104f7836104c2565b610489565b92828452602083830101116100bd57815f926020809301838601378301015290565b9060806003198301126100bd576004356001600160401b0381116100bd5782610549916004016104dd565b916024356001600160401b0381116100bd5781610568916004016104dd565b916044356001600160401b0381116100bd5782610587916004016104dd565b91606435906001600160401b0382116100bd576105a6916004016104dd565b90565b60a06003198201126100bd576004356001600160401b0381116100bd57816105d3916004016104dd565b916024356001600160401b0381116100bd57826105f2916004016104dd565b916044356001600160401b0381116100bd5781610611916004016104dd565b916064356001600160401b0381116100bd5782610630916004016104dd565b91608435906001600160401b0382116100bd576105a6916004016104dd565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b93906105a695936106a46106c0946106966106b29460a08a5260a08a019061064f565b9088820360208a015261064f565b90868203604088015261064f565b90848203606086015261064f565b91608081840391015261064f565b94919361071161072d946107036105a699976106f561071f9660c08c5260c08c019061064f565b908a820360208c015261064f565b9088820360408a015261064f565b90868203606088015261064f565b90848203608086015261064f565b9160a081840391015261064f565b5f546001600160a01b0316330361074e57565b63118cdaa760e01b5f523360045260245ffd5b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8210156108a1575b806d04ee2d6d415b85acef8100000000600a921015610886575b662386f26fc10000811015610872575b6305f5e100811015610861575b612710811015610852575b6064811015610844575b1015610839575b600a602160018401936107eb6104f7866104c2565b948086526107fb601f19916104c2565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561083457600a9091610806565b505090565b6001909101906107d6565b6064600291049301926107cf565b612710600491049301926107c5565b6305f5e100600891049301926107ba565b662386f26fc10000601091049301926107ad565b6d04ee2d6d415b85acef81000000006020910493019261079d565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b810461078356fea2646970667358221220226e138869aba54992d29d451bf290c907ed50ab86bfc32afaf1404d69d603cf64736f6c634300081e0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x71 JUMPI CALLER ISZERO PUSH1 0x5E JUMPI PUSH0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP3 AND DUP2 OR DUP4 SSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP1 LOG3 PUSH2 0x8FA SWAP1 DUP2 PUSH2 0x76 DUP3 CODECOPY RETURN JUMPDEST PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x34687FC5 EQ PUSH2 0x46F JUMPI POP DUP1 PUSH4 0x386A0D26 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x7B844D86 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B7 JUMPI DUP1 PUSH4 0xAC366BC6 EQ PUSH2 0x366 JUMPI DUP1 PUSH4 0xAD2F19F3 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0xC57397EC EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xE3232810 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xE5DBD1AE EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC1 JUMPI PUSH4 0xF342554C EQ PUSH2 0xA0 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xBD JUMPI PUSH2 0xEF PUSH2 0x73B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x137 JUMPI PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP2 AND DUP4 OR DUP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP1 LOG3 STOP JUMPDEST PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x158 CALLDATASIZE PUSH2 0x51E JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x2 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1AD JUMPI PUSH32 0x14B6C7296A7EF1F1D61274D04D7364309A7A32FBB21087FB4C15A5D1534AC899 SWAP5 PUSH2 0x19B DUP4 PUSH2 0x1A8 SWAP5 PUSH1 0x2 SSTORE PUSH2 0x761 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 DUP7 PUSH2 0x673 JUMP JUMPDEST SUB SWAP1 LOG1 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x1CF CALLDATASIZE PUSH2 0x5A9 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 PUSH1 0x3 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1AD JUMPI PUSH32 0xC779766E64DBA61C56C17693FAA61AE802BCDC203A1479BFB4970EDD3AB7E64F SWAP6 PUSH2 0x213 DUP5 PUSH2 0x1A8 SWAP6 PUSH1 0x3 SSTORE PUSH2 0x761 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP7 DUP8 PUSH2 0x6CE JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH1 0xC0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x250 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x26F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x28E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x2AE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP3 PUSH1 0x84 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x2CE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP1 PUSH1 0xA4 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0xBD JUMPI PUSH32 0x8982A390C0FB1688E369D1AB91E529CAE84E472205007AC93BE646EC121F9410 SWAP6 PUSH2 0x213 PUSH2 0x1A8 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x322 CALLDATASIZE PUSH2 0x5A9 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 PUSH1 0x1 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1AD JUMPI PUSH32 0xD494BD9DCAEEF0E3E0FD19A0B13AF05ABF8CA5FFD5E70724ED987B2FCFA443D3 SWAP6 PUSH2 0x213 DUP5 PUSH2 0x1A8 SWAP6 PUSH1 0x1 SSTORE PUSH2 0x761 JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x374 CALLDATASIZE PUSH2 0x51E JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x4 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1AD JUMPI PUSH32 0x5A6EC825B52239F3C530CC18DCA698150D270962D2021703403DCD6815B1AF61 SWAP5 PUSH2 0x19B DUP4 PUSH2 0x1A8 SWAP5 PUSH1 0x4 SSTORE PUSH2 0x761 JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH2 0x413 PUSH2 0x73B JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP2 AND DUP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 DUP3 DUP1 LOG3 STOP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 SWAP1 PUSH1 0x1 SLOAD DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x4AE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x4AE JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xBD JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x4FC PUSH2 0x4F7 DUP4 PUSH2 0x4C2 JUMP JUMPDEST PUSH2 0x489 JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xBD JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x80 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x549 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP2 PUSH2 0x568 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x587 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0xBD JUMPI PUSH2 0x5A6 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP2 PUSH2 0x5D3 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x5F2 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP2 PUSH2 0x611 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x630 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0xBD JUMPI PUSH2 0x5A6 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x5A6 SWAP6 SWAP4 PUSH2 0x6A4 PUSH2 0x6C0 SWAP5 PUSH2 0x696 PUSH2 0x6B2 SWAP5 PUSH1 0xA0 DUP11 MSTORE PUSH1 0xA0 DUP11 ADD SWAP1 PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x20 DUP11 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0x40 DUP9 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP5 SWAP2 SWAP4 PUSH2 0x711 PUSH2 0x72D SWAP5 PUSH2 0x703 PUSH2 0x5A6 SWAP10 SWAP8 PUSH2 0x6F5 PUSH2 0x71F SWAP7 PUSH1 0xC0 DUP13 MSTORE PUSH1 0xC0 DUP13 ADD SWAP1 PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x40 DUP11 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0x60 DUP9 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x74E JUMPI JUMP JUMPDEST PUSH4 0x118CDAA7 PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x8A1 JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x886 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x872 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x861 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x852 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x844 JUMPI JUMPDEST LT ISZERO PUSH2 0x839 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x7EB PUSH2 0x4F7 DUP7 PUSH2 0x4C2 JUMP JUMPDEST SWAP5 DUP1 DUP7 MSTORE PUSH2 0x7FB PUSH1 0x1F NOT SWAP2 PUSH2 0x4C2 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x834 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x806 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7C5 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7BA JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7AD JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x79D JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x783 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 PUSH15 0x138869ABA54992D29D451BF290C907 0xED POP 0xAB DUP7 0xBF 0xC3 0x2A STATICCALL CALL BLOCKHASH 0x4D PUSH10 0xD603CF64736F6C634300 ADDMOD 0x1E STOP CALLER ","sourceMap":"172:3999:7:-:0;;;;;;;1924:10;1273:26:0;1269:95;;1297:1;172:3999:7;;1924:10;-1:-1:-1;;;;;;172:3999:7;;;;;;1924:10;-1:-1:-1;;;;;172:3999:7;;;;3052:40:0;;1297:1;3052:40;172:3999:7;;;;;;;1269:95:0;1322:31;;;1297:1;1322:31;1297:1;1322:31;172:3999:7;;1297:1:0;1322:31;172:3999:7;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_string":{"entryPoint":1245,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_stringt_stringt_stringt_string":{"entryPoint":1310,"id":null,"parameterSlots":1,"returnSlots":4},"abi_decode_stringt_stringt_stringt_stringt_string":{"entryPoint":1449,"id":null,"parameterSlots":1,"returnSlots":5},"abi_encode_string":{"entryPoint":1615,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_string_string_string_string":{"entryPoint":1651,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_string_string_string_string_string_string":{"entryPoint":1742,"id":null,"parameterSlots":7,"returnSlots":1},"allocate_memory":{"entryPoint":1161,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":1218,"id":null,"parameterSlots":1,"returnSlots":1},"fun_checkOwner":{"entryPoint":1851,"id":84,"parameterSlots":0,"returnSlots":0},"fun_toString":{"entryPoint":1889,"id":343,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816334687fc51461046f57508063386a0d2614610452578063715018a6146103fb5780637b844d86146103de5780638da5cb5b146103b7578063ac366bc614610366578063ad2f19f314610314578063c57397ec14610220578063e3232810146101c1578063e5dbd1ae1461014a578063f2fde38b146100c15763f342554c146100a0575f80fd5b346100bd575f3660031901126100bd576020600454604051908152f35b5f80fd5b346100bd5760203660031901126100bd576004356001600160a01b038116908190036100bd576100ef61073b565b8015610137575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b346100bd576101583661051e565b929060025490600182018092116101ad577f14b6c7296a7ef1f1d61274d04d7364309a7a32fbb21087fb4c15a5d1534ac8999461019b836101a894600255610761565b9160405195869586610673565b0390a1005b634e487b7160e01b5f52601160045260245ffd5b346100bd576101cf366105a9565b90939160035491600183018093116101ad577fc779766e64dba61c56c17693faa61ae802bcdc203a1479bfb4970edd3ab7e64f95610213846101a895600355610761565b92604051968796876106ce565b346100bd5760c03660031901126100bd576004356001600160401b0381116100bd576102509036906004016104dd565b6024356001600160401b0381116100bd5761026f9036906004016104dd565b6044356001600160401b0381116100bd5761028e9036906004016104dd565b916064356001600160401b0381116100bd576102ae9036906004016104dd565b926084356001600160401b0381116100bd576102ce9036906004016104dd565b9060a435916001600160401b0383116100bd577f8982a390c0fb1688e369d1ab91e529cae84e472205007ac93be646ec121f9410956102136101a89436906004016104dd565b346100bd57610322366105a9565b90939160015491600183018093116101ad577fd494bd9dcaeef0e3e0fd19a0b13af05abf8ca5ffd5e70724ed987b2fcfa443d395610213846101a895600155610761565b346100bd576103743661051e565b929060045490600182018092116101ad577f5a6ec825b52239f3c530cc18dca698150d270962d2021703403dcd6815b1af619461019b836101a894600455610761565b346100bd575f3660031901126100bd575f546040516001600160a01b039091168152602090f35b346100bd575f3660031901126100bd576020600354604051908152f35b346100bd575f3660031901126100bd5761041361073b565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100bd575f3660031901126100bd576020600254604051908152f35b346100bd575f3660031901126100bd576020906001548152f35b6040519190601f01601f191682016001600160401b038111838210176104ae57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381116104ae57601f01601f191660200190565b81601f820112156100bd578035906104fc6104f7836104c2565b610489565b92828452602083830101116100bd57815f926020809301838601378301015290565b9060806003198301126100bd576004356001600160401b0381116100bd5782610549916004016104dd565b916024356001600160401b0381116100bd5781610568916004016104dd565b916044356001600160401b0381116100bd5782610587916004016104dd565b91606435906001600160401b0382116100bd576105a6916004016104dd565b90565b60a06003198201126100bd576004356001600160401b0381116100bd57816105d3916004016104dd565b916024356001600160401b0381116100bd57826105f2916004016104dd565b916044356001600160401b0381116100bd5781610611916004016104dd565b916064356001600160401b0381116100bd5782610630916004016104dd565b91608435906001600160401b0382116100bd576105a6916004016104dd565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b93906105a695936106a46106c0946106966106b29460a08a5260a08a019061064f565b9088820360208a015261064f565b90868203604088015261064f565b90848203606086015261064f565b91608081840391015261064f565b94919361071161072d946107036105a699976106f561071f9660c08c5260c08c019061064f565b908a820360208c015261064f565b9088820360408a015261064f565b90868203606088015261064f565b90848203608086015261064f565b9160a081840391015261064f565b5f546001600160a01b0316330361074e57565b63118cdaa760e01b5f523360045260245ffd5b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8210156108a1575b806d04ee2d6d415b85acef8100000000600a921015610886575b662386f26fc10000811015610872575b6305f5e100811015610861575b612710811015610852575b6064811015610844575b1015610839575b600a602160018401936107eb6104f7866104c2565b948086526107fb601f19916104c2565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561083457600a9091610806565b505090565b6001909101906107d6565b6064600291049301926107cf565b612710600491049301926107c5565b6305f5e100600891049301926107ba565b662386f26fc10000601091049301926107ad565b6d04ee2d6d415b85acef81000000006020910493019261079d565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b810461078356fea2646970667358221220226e138869aba54992d29d451bf290c907ed50ab86bfc32afaf1404d69d603cf64736f6c634300081e0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x34687FC5 EQ PUSH2 0x46F JUMPI POP DUP1 PUSH4 0x386A0D26 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x7B844D86 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B7 JUMPI DUP1 PUSH4 0xAC366BC6 EQ PUSH2 0x366 JUMPI DUP1 PUSH4 0xAD2F19F3 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0xC57397EC EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xE3232810 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xE5DBD1AE EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC1 JUMPI PUSH4 0xF342554C EQ PUSH2 0xA0 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xBD JUMPI PUSH2 0xEF PUSH2 0x73B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x137 JUMPI PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP2 AND DUP4 OR DUP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP1 LOG3 STOP JUMPDEST PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x158 CALLDATASIZE PUSH2 0x51E JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x2 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1AD JUMPI PUSH32 0x14B6C7296A7EF1F1D61274D04D7364309A7A32FBB21087FB4C15A5D1534AC899 SWAP5 PUSH2 0x19B DUP4 PUSH2 0x1A8 SWAP5 PUSH1 0x2 SSTORE PUSH2 0x761 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 DUP7 PUSH2 0x673 JUMP JUMPDEST SUB SWAP1 LOG1 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x1CF CALLDATASIZE PUSH2 0x5A9 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 PUSH1 0x3 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1AD JUMPI PUSH32 0xC779766E64DBA61C56C17693FAA61AE802BCDC203A1479BFB4970EDD3AB7E64F SWAP6 PUSH2 0x213 DUP5 PUSH2 0x1A8 SWAP6 PUSH1 0x3 SSTORE PUSH2 0x761 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP7 DUP8 PUSH2 0x6CE JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH1 0xC0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x250 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x26F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x28E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x2AE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP3 PUSH1 0x84 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI PUSH2 0x2CE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP1 PUSH1 0xA4 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0xBD JUMPI PUSH32 0x8982A390C0FB1688E369D1AB91E529CAE84E472205007AC93BE646EC121F9410 SWAP6 PUSH2 0x213 PUSH2 0x1A8 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x322 CALLDATASIZE PUSH2 0x5A9 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 PUSH1 0x1 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1AD JUMPI PUSH32 0xD494BD9DCAEEF0E3E0FD19A0B13AF05ABF8CA5FFD5E70724ED987B2FCFA443D3 SWAP6 PUSH2 0x213 DUP5 PUSH2 0x1A8 SWAP6 PUSH1 0x1 SSTORE PUSH2 0x761 JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH2 0x374 CALLDATASIZE PUSH2 0x51E JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x4 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1AD JUMPI PUSH32 0x5A6EC825B52239F3C530CC18DCA698150D270962D2021703403DCD6815B1AF61 SWAP5 PUSH2 0x19B DUP4 PUSH2 0x1A8 SWAP5 PUSH1 0x4 SSTORE PUSH2 0x761 JUMP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH2 0x413 PUSH2 0x73B JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP2 AND DUP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 DUP3 DUP1 LOG3 STOP JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xBD JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xBD JUMPI PUSH1 0x20 SWAP1 PUSH1 0x1 SLOAD DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x4AE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x4AE JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xBD JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x4FC PUSH2 0x4F7 DUP4 PUSH2 0x4C2 JUMP JUMPDEST PUSH2 0x489 JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xBD JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x80 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x549 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP2 PUSH2 0x568 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x587 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0xBD JUMPI PUSH2 0x5A6 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0xBD JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP2 PUSH2 0x5D3 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x5F2 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP2 PUSH2 0x611 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBD JUMPI DUP3 PUSH2 0x630 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0xBD JUMPI PUSH2 0x5A6 SWAP2 PUSH1 0x4 ADD PUSH2 0x4DD JUMP JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x5A6 SWAP6 SWAP4 PUSH2 0x6A4 PUSH2 0x6C0 SWAP5 PUSH2 0x696 PUSH2 0x6B2 SWAP5 PUSH1 0xA0 DUP11 MSTORE PUSH1 0xA0 DUP11 ADD SWAP1 PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x20 DUP11 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0x40 DUP9 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP5 SWAP2 SWAP4 PUSH2 0x711 PUSH2 0x72D SWAP5 PUSH2 0x703 PUSH2 0x5A6 SWAP10 SWAP8 PUSH2 0x6F5 PUSH2 0x71F SWAP7 PUSH1 0xC0 DUP13 MSTORE PUSH1 0xC0 DUP13 ADD SWAP1 PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x40 DUP11 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0x60 DUP9 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x64F JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x74E JUMPI JUMP JUMPDEST PUSH4 0x118CDAA7 PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x8A1 JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x886 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x872 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x861 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x852 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x844 JUMPI JUMPDEST LT ISZERO PUSH2 0x839 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x7EB PUSH2 0x4F7 DUP7 PUSH2 0x4C2 JUMP JUMPDEST SWAP5 DUP1 DUP7 MSTORE PUSH2 0x7FB PUSH1 0x1F NOT SWAP2 PUSH2 0x4C2 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x834 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x806 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7C5 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7BA JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x7AD JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x79D JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x783 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 PUSH15 0x138869ABA54992D29D451BF290C907 0xED POP 0xAB DUP7 0xBF 0xC3 0x2A STATICCALL CALL BLOCKHASH 0x4D PUSH10 0xD603CF64736F6C634300 ADDMOD 0x1E STOP CALLER ","sourceMap":"172:3999:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;172:3999:7;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;172:3999:7;;;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;1500:62:0;;:::i;:::-;2627:22;;2623:91;;172:3999:7;;;-1:-1:-1;;;;;;172:3999:7;;;;;;-1:-1:-1;;;;;172:3999:7;;3052:40:0;;172:3999:7;3052:40:0;172:3999:7;2623:91:0;2672:31;;;172:3999:7;2672:31:0;172:3999:7;;;;;2672:31:0;172:3999:7;;;;;;;:::i;:::-;;;3224:24;172:3999;;3247:1;172:3999;;;;;;;3264:148;172:3999;3365:37;172:3999;3264:148;172:3999;3224:24;172:3999;3365:37;:::i;:::-;172:3999;;;3264:148;;;;;:::i;:::-;;;;172:3999;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3655:18;172:3999;;3672:1;172:3999;;;;;;;3689:135;172:3999;3783:31;172:3999;3689:135;172:3999;3655:18;172:3999;3783:31;:::i;:::-;172:3999;;;3689:135;;;;;:::i;172:3999::-;;;;;;-1:-1:-1;;172:3999:7;;;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;172:3999:7;;;;2481:77;172:3999;;2481:77;172:3999;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;2831:1;172:3999;;2831:1;172:3999;;;;;;;2848:138;172:3999;2940:36;172:3999;2848:138;172:3999;2831:1;172:3999;2940:36;:::i;172:3999::-;;;;;;;:::i;:::-;;;;;;4048:1;172:3999;;;;;;;4065:97;172:3999;4128:33;172:3999;4065:97;172:3999;;;4128:33;:::i;172:3999::-;;;;;;-1:-1:-1;;172:3999:7;;;;;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;;;;;-1:-1:-1;;172:3999:7;;;;;509:28;172:3999;;;;;;;;;;;;;-1:-1:-1;;172:3999:7;;;;1500:62:0;;:::i;:::-;172:3999:7;;;-1:-1:-1;;;;;;172:3999:7;;;;-1:-1:-1;;;;;172:3999:7;3052:40:0;172:3999:7;;3052:40:0;172:3999:7;;;;;;;-1:-1:-1;;172:3999:7;;;;;469:34;172:3999;;;;;;;;;;;;;-1:-1:-1;;172:3999:7;;;;;;430:33;172:3999;;;;;;;;;;;-1:-1:-1;;172:3999:7;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;172:3999:7;;;;;-1:-1:-1;172:3999:7;;-1:-1:-1;;;;;172:3999:7;;;;;;-1:-1:-1;;172:3999:7;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;172:3999:7;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;172:3999:7;;;;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;;172:3999:7;;;;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;172:3999:7;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;172:3999:7;;;;;;;;-1:-1:-1;;172:3999:7;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;1796:162:0:-;1710:6;172:3999:7;-1:-1:-1;;;;;172:3999:7;735:10:1;1855:23:0;1851:101;;1796:162::o;1851:101::-;1901:40;;;1710:6;1901:40;735:10:1;1901:40:0;172:3999:7;;1710:6:0;1901:40;1308:634:3;1430:17;-1:-1:-1;29282:17:4;-1:-1:-1;;;29282:17:4;;;29278:103;;1308:634:3;29398:17:4;29407:8;29978:7;29398:17;;;29394:103;;1308:634:3;29523:8:4;29514:17;;;29510:103;;1308:634:3;29639:7:4;29630:16;;;29626:100;;1308:634:3;29752:7:4;29743:16;;;29739:100;;1308:634:3;29865:7:4;29856:16;;;29852:100;;1308:634:3;29969:16:4;;29965:66;;1308:634:3;29978:7:4;1545:94:3;1450:1;172:3999:7;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;1545:94:3;;;1652:247;-1:-1:-1;;172:3999:7;;-1:-1:-1;;;1706:111:3;;;;172:3999:7;1706:111:3;172:3999:7;1867:10:3;;1863:21;;29978:7:4;1652:247:3;;;;1863:21;1879:5;;1308:634;:::o;29965:66:4:-;30015:1;172:3999:7;;;;29965:66:4;;29852:100;29865:7;29936:1;172:3999:7;;;;29852:100:4;;;29739;29752:7;29823:1;172:3999:7;;;;29739:100:4;;;29626;29639:7;29710:1;172:3999:7;;;;29626:100:4;;;29510:103;29523:8;29596:2;172:3999:7;;;;29510:103:4;;;29394;29407:8;29480:2;172:3999:7;;;;29394:103:4;;;29278;-1:-1:-1;29364:2:4;;-1:-1:-1;;;;172:3999:7;;29278:103:4;"},"methodIdentifiers":{"_firstProcessLotId()":"34687fc5","_packingLotId()":"7b844d86","_secondProcessLotId()":"386a0d26","_transportLotId()":"f342554c","createLot(string,string,string,string,string,string)":"c57397ec","owner()":"8da5cb5b","packing(string,string,string,string,string)":"e3232810","registerFirstProcess(string,string,string,string,string)":"ad2f19f3","registerSecondProcess(string,string,string,string)":"e5dbd1ae","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","transport(string,string,string,string)":"ac366bc6"}},"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"lotType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"quantity\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"originId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"lotNo\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"transporterId\",\"type\":\"string\"}],\"name\":\"CreateLotEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"lotNos\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"machineId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"processingHouseId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"timestamp\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"firstProcessLotId\",\"type\":\"string\"}],\"name\":\"FirstProcessEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"secondProcessLotId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"packageId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"weight\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"packagingType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"packingLotId\",\"type\":\"string\"}],\"name\":\"PackagingEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"firstProcessLotIds\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"machineId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"secondProcessOutputLotId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"secondProcessLotId\",\"type\":\"string\"}],\"name\":\"SecondProcessEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"packageId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"transporterId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"cartonId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"transportLotId\",\"type\":\"string\"}],\"name\":\"TransportEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_firstProcessLotId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_packingLotId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_secondProcessLotId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_transportLotId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"lotType\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"quantity\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"originId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"lotNo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"transporterId\",\"type\":\"string\"}],\"name\":\"createLot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"secondProcessLotId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"packageId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"weight\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"packagingType\",\"type\":\"string\"}],\"name\":\"packing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"lotNos\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"machineId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"processingHouseId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"timestamp\",\"type\":\"string\"}],\"name\":\"registerFirstProcess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"firstProcessLotIds\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"machineId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"secondProcessOutputLotId\",\"type\":\"string\"}],\"name\":\"registerSecondProcess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"packageId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"operatorId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"transporterId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cartonId\",\"type\":\"string\"}],\"name\":\"transport\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ExampleSupplyChain.sol\":\"ExampleSupplyChain\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"contracts/ExampleSupplyChain.sol\":{\"keccak256\":\"0xda9e19e3cf9c8d9ab8b72f8a1222f80afa4ee20846d8193f4d40f26d685a4960\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://6129c9e6208599e2c63fbfe635efecf4269401a9d8a1189bf1e0307a3fa52fa1\",\"dweb:/ipfs/QmbJpC2FrW86Pt9brNWJwEM8Ltj5pSRcCkRBGxZnWXvt7e\"]}},\"version\":1}"}}}}}