{"id":"294516b4613c993159fa474ac6e49583","_format":"hh-sol-build-info-1","solcVersion":"0.8.24","solcLongVersion":"0.8.24+commit.e11b9ed9","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"./IAccessControl.sol\";\nimport {Context} from \"../utils/Context.sol\";\nimport {IERC165, ERC165} from \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n mapping(bytes32 role => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n return _roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = getRoleAdmin(role);\n _roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n if (!hasRole(role, account)) {\n _roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n if (hasRole(role, account)) {\n _roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/IAccessControl.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev External interface of AccessControl declared to support ERC-165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted to signal this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\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/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS\n }\n\n /**\n * @dev The signature derives the `address(0)`.\n */\n error ECDSAInvalidSignature();\n\n /**\n * @dev The signature has an invalid length.\n */\n error ECDSAInvalidSignatureLength(uint256 length);\n\n /**\n * @dev The signature has an S value that is in the upper half order.\n */\n error ECDSAInvalidSignatureS(bytes32 s);\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n * and a bytes32 providing additional information about the error.\n *\n * If no error is returned, then the address can be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function tryRecover(\n bytes32 hash,\n bytes memory signature\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n assembly (\"memory-safe\") {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n unchecked {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n // We do not check for an overflow here since the shift operation results in 0 or 1.\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS, s);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\n }\n\n return (signer, RecoverError.NoError, bytes32(0));\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n */\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert ECDSAInvalidSignature();\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\n } else if (error == RecoverError.InvalidSignatureS) {\n revert ECDSAInvalidSignatureS(errorArg);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/MessageHashUtils.sol)\n\npragma solidity ^0.8.20;\n\nimport {Strings} from \"../Strings.sol\";\n\n/**\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n *\n * The library provides methods for generating a hash of a message that conforms to the\n * https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n * specifications.\n */\nlibrary MessageHashUtils {\n /**\n * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing a bytes32 `messageHash` with\n * `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n * hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n * keccak256, although any bytes32 value can be safely used because the final digest will\n * be re-hashed.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\n assembly (\"memory-safe\") {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\") // 32 is the bytes-length of messageHash\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\n }\n }\n\n /**\n * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing an arbitrary `message` with\n * `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n * hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\n return\n keccak256(bytes.concat(\"\\x19Ethereum Signed Message:\\n\", bytes(Strings.toString(message.length)), message));\n }\n\n /**\n * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n * `0x00` (data with intended validator).\n *\n * The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n * `validator` address. Then hashing the result.\n *\n * See {ECDSA-recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(hex\"19_00\", validator, data));\n }\n\n /**\n * @dev Variant of {toDataWithIntendedValidatorHash-address-bytes} optimized for cases where `data` is a bytes32.\n */\n function toDataWithIntendedValidatorHash(\n address validator,\n bytes32 messageHash\n ) internal pure returns (bytes32 digest) {\n assembly (\"memory-safe\") {\n mstore(0x00, hex\"19_00\")\n mstore(0x02, shl(96, validator))\n mstore(0x16, messageHash)\n digest := keccak256(0x00, 0x36)\n }\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-712 typed data (ERC-191 version `0x01`).\n *\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n * `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n *\n * See {ECDSA-recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n mstore(ptr, hex\"19_01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n digest := keccak256(ptr, 0x42)\n }\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\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/AIToken.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport {AccessControl} from \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport {ECDSA} from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport {MessageHashUtils} from \"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\";\n\n/// @title AIToken\n/// @notice ERC20 token that mints units for providers based on attested compute receipts\ncontract AIToken is ERC20, AccessControl {\n using ECDSA for bytes32;\n using MessageHashUtils for bytes32;\n\n bytes32 public constant COORDINATOR_ROLE = keccak256(\"COORDINATOR_ROLE\");\n bytes32 public constant ATTESTOR_ROLE = keccak256(\"ATTESTOR_ROLE\");\n\n /// @notice Tracks consumed receipt hashes to prevent replay\n mapping(bytes32 => bool) public consumedReceipts;\n\n event ReceiptConsumed(bytes32 indexed receiptHash, address indexed provider, uint256 units, address indexed attestor);\n\n constructor(address admin) ERC20(\"AIToken\", \"AIT\") {\n _grantRole(DEFAULT_ADMIN_ROLE, admin);\n }\n\n /// @notice Mint tokens for a provider when coordinator submits a valid attested receipt\n /// @param provider Address of the compute provider receiving minted tokens\n /// @param units Amount of tokens to mint\n /// @param receiptHash Unique hash representing the off-chain receipt\n /// @param signature Coordinator-attested signature authorizing the mint\n function mintWithReceipt(\n address provider,\n uint256 units,\n bytes32 receiptHash,\n bytes calldata signature\n ) external onlyRole(COORDINATOR_ROLE) {\n require(provider != address(0), \"invalid provider\");\n require(units > 0, \"invalid units\");\n require(!consumedReceipts[receiptHash], \"receipt already consumed\");\n\n bytes32 digest = _mintDigest(provider, units, receiptHash);\n address attestor = digest.recover(signature);\n require(hasRole(ATTESTOR_ROLE, attestor), \"invalid attestor signature\");\n\n consumedReceipts[receiptHash] = true;\n _mint(provider, units);\n\n emit ReceiptConsumed(receiptHash, provider, units, attestor);\n }\n\n /// @notice Helper to compute the signed digest required for minting\n function mintDigest(address provider, uint256 units, bytes32 receiptHash) external view returns (bytes32) {\n return _mintDigest(provider, units, receiptHash);\n }\n\n function _mintDigest(address provider, uint256 units, bytes32 receiptHash) internal view returns (bytes32) {\n bytes32 structHash = keccak256(abi.encode(block.chainid, address(this), provider, units, receiptHash));\n return structHash.toEthSignedMessageHash();\n }\n}\n"},"contracts/AITokenRegistry.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {AccessControl} from \"@openzeppelin/contracts/access/AccessControl.sol\";\n\n/// @title AITokenRegistry\n/// @notice Tracks permitted providers and staking requirements for AIToken minting\ncontract AITokenRegistry is AccessControl {\n bytes32 public constant COORDINATOR_ROLE = keccak256(\"COORDINATOR_ROLE\");\n\n struct ProviderInfo {\n bool active;\n uint256 collateral;\n }\n\n mapping(address => ProviderInfo) public providers;\n\n event ProviderRegistered(address indexed provider, uint256 collateral);\n event ProviderUpdated(address indexed provider, bool active, uint256 collateral);\n\n constructor(address admin) {\n _grantRole(DEFAULT_ADMIN_ROLE, admin);\n }\n\n function registerProvider(address provider, uint256 collateral) external onlyRole(COORDINATOR_ROLE) {\n require(provider != address(0), \"invalid provider\");\n require(!providers[provider].active, \"already registered\");\n providers[provider] = ProviderInfo({active: true, collateral: collateral});\n emit ProviderRegistered(provider, collateral);\n }\n\n function updateProvider(\n address provider,\n bool active,\n uint256 collateral\n ) external onlyRole(COORDINATOR_ROLE) {\n require(provider != address(0), \"invalid provider\");\n require(providers[provider].active || active, \"provider not registered\");\n providers[provider] = ProviderInfo({active: active, collateral: collateral});\n emit ProviderUpdated(provider, active, collateral);\n }\n\n function providerInfo(address provider) external view returns (ProviderInfo memory) {\n return providers[provider];\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/access/AccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","exportedSymbols":{"AccessControl":[296],"Context":[1165],"ERC165":[3077],"IAccessControl":[379],"IERC165":[3089]},"id":297,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:0"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"./IAccessControl.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":297,"sourceUnit":380,"src":"134:52:0","symbolAliases":[{"foreign":{"id":2,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"142:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":297,"sourceUnit":1166,"src":"187:45:0","symbolAliases":[{"foreign":{"id":4,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"195:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../utils/introspection/ERC165.sol","id":8,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":297,"sourceUnit":3078,"src":"233:66:0","symbolAliases":[{"foreign":{"id":6,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"241:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"250:6:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10,"name":"Context","nameLocations":["1997:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1165,"src":"1997:7:0"},"id":11,"nodeType":"InheritanceSpecifier","src":"1997:7:0"},{"baseName":{"id":12,"name":"IAccessControl","nameLocations":["2006:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":379,"src":"2006:14:0"},"id":13,"nodeType":"InheritanceSpecifier","src":"2006:14:0"},{"baseName":{"id":14,"name":"ERC165","nameLocations":["2022:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":3077,"src":"2022:6:0"},"id":15,"nodeType":"InheritanceSpecifier","src":"2022:6:0"}],"canonicalName":"AccessControl","contractDependencies":[],"contractKind":"contract","documentation":{"id":9,"nodeType":"StructuredDocumentation","src":"301:1660:0","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"id":296,"linearizedBaseContracts":[296,3077,3089,379,1165],"name":"AccessControl","nameLocation":"1980:13:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControl.RoleData","id":22,"members":[{"constant":false,"id":19,"mutability":"mutable","name":"hasRole","nameLocation":"2094:7:0","nodeType":"VariableDeclaration","scope":22,"src":"2061:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":18,"keyName":"account","keyNameLocation":"2077:7:0","keyType":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"2069:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2061:32:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17,"name":"bool","nodeType":"ElementaryTypeName","src":"2088:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":21,"mutability":"mutable","name":"adminRole","nameLocation":"2119:9:0","nodeType":"VariableDeclaration","scope":22,"src":"2111:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2111:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2042:8:0","nodeType":"StructDefinition","scope":296,"src":"2035:100:0","visibility":"public"},{"constant":false,"id":27,"mutability":"mutable","name":"_roles","nameLocation":"2183:6:0","nodeType":"VariableDeclaration","scope":296,"src":"2141:48:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$22_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"typeName":{"id":26,"keyName":"role","keyNameLocation":"2157:4:0","keyType":{"id":23,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2149:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2141:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$22_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":25,"nodeType":"UserDefinedTypeName","pathNode":{"id":24,"name":"RoleData","nameLocations":["2165:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":22,"src":"2165:8:0"},"referencedDeclaration":22,"src":"2165:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$22_storage_ptr","typeString":"struct AccessControl.RoleData"}}},"visibility":"private"},{"constant":true,"functionSelector":"a217fddf","id":30,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2220:18:0","nodeType":"VariableDeclaration","scope":296,"src":"2196:49:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2196:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":29,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"body":{"id":40,"nodeType":"Block","src":"2463:44:0","statements":[{"expression":{"arguments":[{"id":36,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"2484:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":35,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[94,115],"referencedDeclaration":94,"src":"2473:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":37,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2473:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38,"nodeType":"ExpressionStatement","src":"2473:16:0"},{"id":39,"nodeType":"PlaceholderStatement","src":"2499:1:0"}]},"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"2252:174:0","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":41,"name":"onlyRole","nameLocation":"2440:8:0","nodeType":"ModifierDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"role","nameLocation":"2457:4:0","nodeType":"VariableDeclaration","scope":41,"src":"2449:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2449:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2448:14:0"},"src":"2431:76:0","virtual":false,"visibility":"internal"},{"baseFunctions":[3076],"body":{"id":62,"nodeType":"Block","src":"2632:111:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":55,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":50,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"2649:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":52,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"2669:14:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$379_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$379_$","typeString":"type(contract IAccessControl)"}],"id":51,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2664:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":53,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2664:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$379","typeString":"type(contract IAccessControl)"}},"id":54,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2685:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"2664:32:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2649:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":58,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"2724:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":56,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2700:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControl_$296_$","typeString":"type(contract super AccessControl)"}},"id":57,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2706:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3076,"src":"2700:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":59,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2700:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2649:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":49,"id":61,"nodeType":"Return","src":"2642:94:0"}]},"documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2513:23:0","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":63,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2550:17:0","nodeType":"FunctionDefinition","overrides":{"id":46,"nodeType":"OverrideSpecifier","overrides":[],"src":"2608:8:0"},"parameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"interfaceId","nameLocation":"2575:11:0","nodeType":"VariableDeclaration","scope":63,"src":"2568:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":43,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2568:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2567:20:0"},"returnParameters":{"id":49,"nodeType":"ParameterList","parameters":[{"constant":false,"id":48,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":63,"src":"2626:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":47,"name":"bool","nodeType":"ElementaryTypeName","src":"2626:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2625:6:0"},"scope":296,"src":"2541:202:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[346],"body":{"id":80,"nodeType":"Block","src":"2913:53:0","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":73,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"2930:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$22_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":75,"indexExpression":{"id":74,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"2937:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2930:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$22_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":76,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2943:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":19,"src":"2930:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":78,"indexExpression":{"id":77,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"2951:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2930:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":72,"id":79,"nodeType":"Return","src":"2923:36:0"}]},"documentation":{"id":64,"nodeType":"StructuredDocumentation","src":"2749:76:0","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":81,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"2839:7:0","nodeType":"FunctionDefinition","parameters":{"id":69,"nodeType":"ParameterList","parameters":[{"constant":false,"id":66,"mutability":"mutable","name":"role","nameLocation":"2855:4:0","nodeType":"VariableDeclaration","scope":81,"src":"2847:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":65,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2847:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68,"mutability":"mutable","name":"account","nameLocation":"2869:7:0","nodeType":"VariableDeclaration","scope":81,"src":"2861:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"2861:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2846:31:0"},"returnParameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81,"src":"2907:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":70,"name":"bool","nodeType":"ElementaryTypeName","src":"2907:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2906:6:0"},"scope":296,"src":"2830:136:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":93,"nodeType":"Block","src":"3231:47:0","statements":[{"expression":{"arguments":[{"id":88,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3252:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":89,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"3258:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":90,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3258:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":87,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[94,115],"referencedDeclaration":115,"src":"3241:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":91,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":92,"nodeType":"ExpressionStatement","src":"3241:30:0"}]},"documentation":{"id":82,"nodeType":"StructuredDocumentation","src":"2972:198:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":94,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3184:10:0","nodeType":"FunctionDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84,"mutability":"mutable","name":"role","nameLocation":"3203:4:0","nodeType":"VariableDeclaration","scope":94,"src":"3195:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3195:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3194:14:0"},"returnParameters":{"id":86,"nodeType":"ParameterList","parameters":[],"src":"3231:0:0"},"scope":296,"src":"3175:103:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":114,"nodeType":"Block","src":"3481:124:0","statements":[{"condition":{"id":106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3495:23:0","subExpression":{"arguments":[{"id":103,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97,"src":"3504:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":104,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"3510:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":102,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"3496:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3496:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":113,"nodeType":"IfStatement","src":"3491:108:0","trueBody":{"id":112,"nodeType":"Block","src":"3520:79:0","statements":[{"errorCall":{"arguments":[{"id":108,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"3574:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":109,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97,"src":"3583:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":107,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"3541:32:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32) pure"}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3541:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":111,"nodeType":"RevertStatement","src":"3534:54:0"}]}}]},"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"3284:119:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":115,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3417:10:0","nodeType":"FunctionDefinition","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97,"mutability":"mutable","name":"role","nameLocation":"3436:4:0","nodeType":"VariableDeclaration","scope":115,"src":"3428:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":96,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3428:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"account","nameLocation":"3450:7:0","nodeType":"VariableDeclaration","scope":115,"src":"3442:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":98,"name":"address","nodeType":"ElementaryTypeName","src":"3442:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3427:31:0"},"returnParameters":{"id":101,"nodeType":"ParameterList","parameters":[],"src":"3481:0:0"},"scope":296,"src":"3408:197:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[354],"body":{"id":128,"nodeType":"Block","src":"3860:46:0","statements":[{"expression":{"expression":{"baseExpression":{"id":123,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"3877:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$22_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":125,"indexExpression":{"id":124,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"3884:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3877:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$22_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3890:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":21,"src":"3877:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":122,"id":127,"nodeType":"Return","src":"3870:29:0"}]},"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"3611:170:0","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":129,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"3795:12:0","nodeType":"FunctionDefinition","parameters":{"id":119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"mutability":"mutable","name":"role","nameLocation":"3816:4:0","nodeType":"VariableDeclaration","scope":129,"src":"3808:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":117,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3807:14:0"},"returnParameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":129,"src":"3851:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":120,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3851:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3850:9:0"},"scope":296,"src":"3786:120:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[362],"body":{"id":147,"nodeType":"Block","src":"4296:42:0","statements":[{"expression":{"arguments":[{"id":143,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4317:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":144,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4323:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":142,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"4306:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4306:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":146,"nodeType":"ExpressionStatement","src":"4306:25:0"}]},"documentation":{"id":130,"nodeType":"StructuredDocumentation","src":"3912:285:0","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":148,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":138,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4289:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":137,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"4276:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":140,"kind":"modifierInvocation","modifierName":{"id":136,"name":"onlyRole","nameLocations":["4267:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"4267:8:0"},"nodeType":"ModifierInvocation","src":"4267:28:0"}],"name":"grantRole","nameLocation":"4211:9:0","nodeType":"FunctionDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"role","nameLocation":"4229:4:0","nodeType":"VariableDeclaration","scope":148,"src":"4221:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4221:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":134,"mutability":"mutable","name":"account","nameLocation":"4243:7:0","nodeType":"VariableDeclaration","scope":148,"src":"4235:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":133,"name":"address","nodeType":"ElementaryTypeName","src":"4235:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4220:31:0"},"returnParameters":{"id":141,"nodeType":"ParameterList","parameters":[],"src":"4296:0:0"},"scope":296,"src":"4202:136:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[370],"body":{"id":166,"nodeType":"Block","src":"4713:43:0","statements":[{"expression":{"arguments":[{"id":162,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":151,"src":"4735:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":163,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":153,"src":"4741:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":161,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"4723:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4723:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":165,"nodeType":"ExpressionStatement","src":"4723:26:0"}]},"documentation":{"id":149,"nodeType":"StructuredDocumentation","src":"4344:269:0","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":167,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":157,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":151,"src":"4706:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":156,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"4693:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4693:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":159,"kind":"modifierInvocation","modifierName":{"id":155,"name":"onlyRole","nameLocations":["4684:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"4684:8:0"},"nodeType":"ModifierInvocation","src":"4684:28:0"}],"name":"revokeRole","nameLocation":"4627:10:0","nodeType":"FunctionDefinition","parameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"role","nameLocation":"4646:4:0","nodeType":"VariableDeclaration","scope":167,"src":"4638:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":150,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4638:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":153,"mutability":"mutable","name":"account","nameLocation":"4660:7:0","nodeType":"VariableDeclaration","scope":167,"src":"4652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"4652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4637:31:0"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"4713:0:0"},"scope":296,"src":"4618:138:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[378],"body":{"id":189,"nodeType":"Block","src":"5383:166:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":175,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"5397:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":176,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"5419:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5419:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5397:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":183,"nodeType":"IfStatement","src":"5393:102:0","trueBody":{"id":182,"nodeType":"Block","src":"5433:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":179,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"5454:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5454:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":181,"nodeType":"RevertStatement","src":"5447:37:0"}]}},{"expression":{"arguments":[{"id":185,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":170,"src":"5517:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":186,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"5523:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":184,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"5505:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5505:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"ExpressionStatement","src":"5505:37:0"}]},"documentation":{"id":168,"nodeType":"StructuredDocumentation","src":"4762:537:0","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":190,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"5313:12:0","nodeType":"FunctionDefinition","parameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":170,"mutability":"mutable","name":"role","nameLocation":"5334:4:0","nodeType":"VariableDeclaration","scope":190,"src":"5326:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":169,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5326:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":172,"mutability":"mutable","name":"callerConfirmation","nameLocation":"5348:18:0","nodeType":"VariableDeclaration","scope":190,"src":"5340:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":171,"name":"address","nodeType":"ElementaryTypeName","src":"5340:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5325:42:0"},"returnParameters":{"id":174,"nodeType":"ParameterList","parameters":[],"src":"5383:0:0"},"scope":296,"src":"5304:245:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":217,"nodeType":"Block","src":"5747:174:0","statements":[{"assignments":[199],"declarations":[{"constant":false,"id":199,"mutability":"mutable","name":"previousAdminRole","nameLocation":"5765:17:0","nodeType":"VariableDeclaration","scope":217,"src":"5757:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":198,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5757:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":203,"initialValue":{"arguments":[{"id":201,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5798:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":200,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"5785:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5785:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5757:46:0"},{"expression":{"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":204,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"5813:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$22_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":206,"indexExpression":{"id":205,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5820:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5813:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$22_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5826:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":21,"src":"5813:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":208,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5838:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5813:34:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":210,"nodeType":"ExpressionStatement","src":"5813:34:0"},{"eventCall":{"arguments":[{"id":212,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5879:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":213,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":199,"src":"5885:17:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":214,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5904:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":211,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"5862:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":216,"nodeType":"EmitStatement","src":"5857:57:0"}]},"documentation":{"id":191,"nodeType":"StructuredDocumentation","src":"5555:114:0","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":218,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"5683:13:0","nodeType":"FunctionDefinition","parameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"role","nameLocation":"5705:4:0","nodeType":"VariableDeclaration","scope":218,"src":"5697:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5697:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"adminRole","nameLocation":"5719:9:0","nodeType":"VariableDeclaration","scope":218,"src":"5711:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5711:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5696:33:0"},"returnParameters":{"id":197,"nodeType":"ParameterList","parameters":[],"src":"5747:0:0"},"scope":296,"src":"5674:247:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":256,"nodeType":"Block","src":"6238:233:0","statements":[{"condition":{"id":232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6252:23:0","subExpression":{"arguments":[{"id":229,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"6261:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":230,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"6267:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":228,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"6253:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6253:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":254,"nodeType":"Block","src":"6428:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6449:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":227,"id":253,"nodeType":"Return","src":"6442:12:0"}]},"id":255,"nodeType":"IfStatement","src":"6248:217:0","trueBody":{"id":251,"nodeType":"Block","src":"6277:145:0","statements":[{"expression":{"id":240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":233,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"6291:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$22_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":235,"indexExpression":{"id":234,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"6298:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6291:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$22_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6304:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":19,"src":"6291:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":238,"indexExpression":{"id":237,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"6312:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6291:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6323:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6291:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":241,"nodeType":"ExpressionStatement","src":"6291:36:0"},{"eventCall":{"arguments":[{"id":243,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"6358:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":244,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"6364:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":245,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"6373:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6373:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":242,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"6346:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6346:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":248,"nodeType":"EmitStatement","src":"6341:45:0"},{"expression":{"hexValue":"74727565","id":249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6407:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":227,"id":250,"nodeType":"Return","src":"6400:11:0"}]}}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"5927:223:0","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":257,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"6164:10:0","nodeType":"FunctionDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"role","nameLocation":"6183:4:0","nodeType":"VariableDeclaration","scope":257,"src":"6175:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6175:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":223,"mutability":"mutable","name":"account","nameLocation":"6197:7:0","nodeType":"VariableDeclaration","scope":257,"src":"6189:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"6189:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6174:31:0"},"returnParameters":{"id":227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":257,"src":"6232:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":225,"name":"bool","nodeType":"ElementaryTypeName","src":"6232:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6231:6:0"},"scope":296,"src":"6155:316:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":294,"nodeType":"Block","src":"6792:233:0","statements":[{"condition":{"arguments":[{"id":268,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"6814:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":269,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"6820:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":267,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"6806:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6806:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":292,"nodeType":"Block","src":"6982:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7003:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":266,"id":291,"nodeType":"Return","src":"6996:12:0"}]},"id":293,"nodeType":"IfStatement","src":"6802:217:0","trueBody":{"id":289,"nodeType":"Block","src":"6830:146:0","statements":[{"expression":{"id":278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":271,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"6844:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$22_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":273,"indexExpression":{"id":272,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"6851:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6844:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$22_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6857:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":19,"src":"6844:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":276,"indexExpression":{"id":275,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"6865:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6844:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6876:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6844:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":279,"nodeType":"ExpressionStatement","src":"6844:37:0"},{"eventCall":{"arguments":[{"id":281,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"6912:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":282,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"6918:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":283,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"6927:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6927:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":280,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":336,"src":"6900:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6900:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":286,"nodeType":"EmitStatement","src":"6895:45:0"},{"expression":{"hexValue":"74727565","id":287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6961:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":266,"id":288,"nodeType":"Return","src":"6954:11:0"}]}}]},"documentation":{"id":258,"nodeType":"StructuredDocumentation","src":"6477:226:0","text":" @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":295,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"6717:11:0","nodeType":"FunctionDefinition","parameters":{"id":263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":260,"mutability":"mutable","name":"role","nameLocation":"6737:4:0","nodeType":"VariableDeclaration","scope":295,"src":"6729:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":259,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6729:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":262,"mutability":"mutable","name":"account","nameLocation":"6751:7:0","nodeType":"VariableDeclaration","scope":295,"src":"6743:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":261,"name":"address","nodeType":"ElementaryTypeName","src":"6743:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6728:31:0"},"returnParameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":295,"src":"6786:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":264,"name":"bool","nodeType":"ElementaryTypeName","src":"6786:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6785:6:0"},"scope":296,"src":"6708:317:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":297,"src":"1962:5065:0","usedErrors":[306,309],"usedEvents":[318,327,336]}],"src":"108:6920:0"},"id":0},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[379]},"id":380,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":298,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"109:24:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":299,"nodeType":"StructuredDocumentation","src":"135:90:1","text":" @dev External interface of AccessControl declared to support ERC-165 detection."},"fullyImplemented":false,"id":379,"linearizedBaseContracts":[379],"name":"IAccessControl","nameLocation":"236:14:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":300,"nodeType":"StructuredDocumentation","src":"257:56:1","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":306,"name":"AccessControlUnauthorizedAccount","nameLocation":"324:32:1","nodeType":"ErrorDefinition","parameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"mutability":"mutable","name":"account","nameLocation":"365:7:1","nodeType":"VariableDeclaration","scope":306,"src":"357:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":301,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":304,"mutability":"mutable","name":"neededRole","nameLocation":"382:10:1","nodeType":"VariableDeclaration","scope":306,"src":"374:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":303,"name":"bytes32","nodeType":"ElementaryTypeName","src":"374:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"356:37:1"},"src":"318:76:1"},{"documentation":{"id":307,"nodeType":"StructuredDocumentation","src":"400:148:1","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":309,"name":"AccessControlBadConfirmation","nameLocation":"559:28:1","nodeType":"ErrorDefinition","parameters":{"id":308,"nodeType":"ParameterList","parameters":[],"src":"587:2:1"},"src":"553:37:1"},{"anonymous":false,"documentation":{"id":310,"nodeType":"StructuredDocumentation","src":"596:254:1","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted to signal this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":318,"name":"RoleAdminChanged","nameLocation":"861:16:1","nodeType":"EventDefinition","parameters":{"id":317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"894:4:1","nodeType":"VariableDeclaration","scope":318,"src":"878:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":311,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":314,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"916:17:1","nodeType":"VariableDeclaration","scope":318,"src":"900:33:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":316,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"951:12:1","nodeType":"VariableDeclaration","scope":318,"src":"935:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":315,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:87:1"},"src":"855:110:1"},{"anonymous":false,"documentation":{"id":319,"nodeType":"StructuredDocumentation","src":"971:295:1","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":327,"name":"RoleGranted","nameLocation":"1277:11:1","nodeType":"EventDefinition","parameters":{"id":326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":321,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1305:4:1","nodeType":"VariableDeclaration","scope":327,"src":"1289:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":323,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1327:7:1","nodeType":"VariableDeclaration","scope":327,"src":"1311:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":322,"name":"address","nodeType":"ElementaryTypeName","src":"1311:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":325,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1352:6:1","nodeType":"VariableDeclaration","scope":327,"src":"1336:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":324,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:71:1"},"src":"1271:89:1"},{"anonymous":false,"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"1366:275:1","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":336,"name":"RoleRevoked","nameLocation":"1652:11:1","nodeType":"EventDefinition","parameters":{"id":335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1680:4:1","nodeType":"VariableDeclaration","scope":336,"src":"1664:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1664:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":332,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1702:7:1","nodeType":"VariableDeclaration","scope":336,"src":"1686:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":331,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":334,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1727:6:1","nodeType":"VariableDeclaration","scope":336,"src":"1711:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":333,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:71:1"},"src":"1646:89:1"},{"documentation":{"id":337,"nodeType":"StructuredDocumentation","src":"1741:76:1","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":346,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1831:7:1","nodeType":"FunctionDefinition","parameters":{"id":342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":339,"mutability":"mutable","name":"role","nameLocation":"1847:4:1","nodeType":"VariableDeclaration","scope":346,"src":"1839:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":338,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1839:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":341,"mutability":"mutable","name":"account","nameLocation":"1861:7:1","nodeType":"VariableDeclaration","scope":346,"src":"1853:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":340,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1838:31:1"},"returnParameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":346,"src":"1893:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":343,"name":"bool","nodeType":"ElementaryTypeName","src":"1893:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1892:6:1"},"scope":379,"src":"1822:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":347,"nodeType":"StructuredDocumentation","src":"1905:184:1","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":354,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2103:12:1","nodeType":"FunctionDefinition","parameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"role","nameLocation":"2124:4:1","nodeType":"VariableDeclaration","scope":354,"src":"2116:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2116:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2115:14:1"},"returnParameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":354,"src":"2153:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2153:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2152:9:1"},"scope":379,"src":"2094:68:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":355,"nodeType":"StructuredDocumentation","src":"2168:239:1","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":362,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2421:9:1","nodeType":"FunctionDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":357,"mutability":"mutable","name":"role","nameLocation":"2439:4:1","nodeType":"VariableDeclaration","scope":362,"src":"2431:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2431:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":359,"mutability":"mutable","name":"account","nameLocation":"2453:7:1","nodeType":"VariableDeclaration","scope":362,"src":"2445:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":358,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2430:31:1"},"returnParameters":{"id":361,"nodeType":"ParameterList","parameters":[],"src":"2470:0:1"},"scope":379,"src":"2412:59:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":363,"nodeType":"StructuredDocumentation","src":"2477:223:1","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":370,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2714:10:1","nodeType":"FunctionDefinition","parameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"role","nameLocation":"2733:4:1","nodeType":"VariableDeclaration","scope":370,"src":"2725:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":364,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2725:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":367,"mutability":"mutable","name":"account","nameLocation":"2747:7:1","nodeType":"VariableDeclaration","scope":370,"src":"2739:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2724:31:1"},"returnParameters":{"id":369,"nodeType":"ParameterList","parameters":[],"src":"2764:0:1"},"scope":379,"src":"2705:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":371,"nodeType":"StructuredDocumentation","src":"2771:491:1","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":378,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3276:12:1","nodeType":"FunctionDefinition","parameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":373,"mutability":"mutable","name":"role","nameLocation":"3297:4:1","nodeType":"VariableDeclaration","scope":378,"src":"3289:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":372,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3289:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":375,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3311:18:1","nodeType":"VariableDeclaration","scope":378,"src":"3303:26:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":374,"name":"address","nodeType":"ElementaryTypeName","src":"3303:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3288:42:1"},"returnParameters":{"id":377,"nodeType":"ParameterList","parameters":[],"src":"3339:0:1"},"scope":379,"src":"3267:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":380,"src":"226:3116:1","usedErrors":[306,309],"usedEvents":[318,327,336]}],"src":"109:3234:1"},"id":1},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[516],"IERC20Errors":[421],"IERC721Errors":[469]},"id":517,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":381,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"112:24:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"138:141:2","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":421,"linearizedBaseContracts":[421],"name":"IERC20Errors","nameLocation":"290:12:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"309:309:2","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":391,"name":"ERC20InsufficientBalance","nameLocation":"629:24:2","nodeType":"ErrorDefinition","parameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"mutability":"mutable","name":"sender","nameLocation":"662:6:2","nodeType":"VariableDeclaration","scope":391,"src":"654:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":384,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":387,"mutability":"mutable","name":"balance","nameLocation":"678:7:2","nodeType":"VariableDeclaration","scope":391,"src":"670:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":386,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":389,"mutability":"mutable","name":"needed","nameLocation":"695:6:2","nodeType":"VariableDeclaration","scope":391,"src":"687:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":388,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:2"},"src":"623:80:2"},{"documentation":{"id":392,"nodeType":"StructuredDocumentation","src":"709:152:2","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":396,"name":"ERC20InvalidSender","nameLocation":"872:18:2","nodeType":"ErrorDefinition","parameters":{"id":395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":394,"mutability":"mutable","name":"sender","nameLocation":"899:6:2","nodeType":"VariableDeclaration","scope":396,"src":"891:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":393,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:2"},"src":"866:41:2"},{"documentation":{"id":397,"nodeType":"StructuredDocumentation","src":"913:159:2","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":401,"name":"ERC20InvalidReceiver","nameLocation":"1083:20:2","nodeType":"ErrorDefinition","parameters":{"id":400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":399,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:2","nodeType":"VariableDeclaration","scope":401,"src":"1104:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":398,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:2"},"src":"1077:45:2"},{"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"1128:345:2","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":410,"name":"ERC20InsufficientAllowance","nameLocation":"1484:26:2","nodeType":"ErrorDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"spender","nameLocation":"1519:7:2","nodeType":"VariableDeclaration","scope":410,"src":"1511:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":403,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":406,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:2","nodeType":"VariableDeclaration","scope":410,"src":"1528:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":405,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":408,"mutability":"mutable","name":"needed","nameLocation":"1555:6:2","nodeType":"VariableDeclaration","scope":410,"src":"1547:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":407,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:2"},"src":"1478:85:2"},{"documentation":{"id":411,"nodeType":"StructuredDocumentation","src":"1569:174:2","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":415,"name":"ERC20InvalidApprover","nameLocation":"1754:20:2","nodeType":"ErrorDefinition","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":413,"mutability":"mutable","name":"approver","nameLocation":"1783:8:2","nodeType":"VariableDeclaration","scope":415,"src":"1775:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":412,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:2"},"src":"1748:45:2"},{"documentation":{"id":416,"nodeType":"StructuredDocumentation","src":"1799:195:2","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":420,"name":"ERC20InvalidSpender","nameLocation":"2005:19:2","nodeType":"ErrorDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":418,"mutability":"mutable","name":"spender","nameLocation":"2033:7:2","nodeType":"VariableDeclaration","scope":420,"src":"2025:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":417,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:2"},"src":"1999:43:2"}],"scope":517,"src":"280:1764:2","usedErrors":[391,396,401,410,415,420],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":422,"nodeType":"StructuredDocumentation","src":"2046:143:2","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":469,"linearizedBaseContracts":[469],"name":"IERC721Errors","nameLocation":"2200:13:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":423,"nodeType":"StructuredDocumentation","src":"2220:219:2","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":427,"name":"ERC721InvalidOwner","nameLocation":"2450:18:2","nodeType":"ErrorDefinition","parameters":{"id":426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":425,"mutability":"mutable","name":"owner","nameLocation":"2477:5:2","nodeType":"VariableDeclaration","scope":427,"src":"2469:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":424,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:2"},"src":"2444:40:2"},{"documentation":{"id":428,"nodeType":"StructuredDocumentation","src":"2490:132:2","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":432,"name":"ERC721NonexistentToken","nameLocation":"2633:22:2","nodeType":"ErrorDefinition","parameters":{"id":431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":430,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:2","nodeType":"VariableDeclaration","scope":432,"src":"2656:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":429,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:2"},"src":"2627:46:2"},{"documentation":{"id":433,"nodeType":"StructuredDocumentation","src":"2679:289:2","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":441,"name":"ERC721IncorrectOwner","nameLocation":"2979:20:2","nodeType":"ErrorDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":435,"mutability":"mutable","name":"sender","nameLocation":"3008:6:2","nodeType":"VariableDeclaration","scope":441,"src":"3000:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":434,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":437,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:2","nodeType":"VariableDeclaration","scope":441,"src":"3016:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":436,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":439,"mutability":"mutable","name":"owner","nameLocation":"3041:5:2","nodeType":"VariableDeclaration","scope":441,"src":"3033:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":438,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:2"},"src":"2973:75:2"},{"documentation":{"id":442,"nodeType":"StructuredDocumentation","src":"3054:152:2","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":446,"name":"ERC721InvalidSender","nameLocation":"3217:19:2","nodeType":"ErrorDefinition","parameters":{"id":445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":444,"mutability":"mutable","name":"sender","nameLocation":"3245:6:2","nodeType":"VariableDeclaration","scope":446,"src":"3237:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":443,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:2"},"src":"3211:42:2"},{"documentation":{"id":447,"nodeType":"StructuredDocumentation","src":"3259:159:2","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":451,"name":"ERC721InvalidReceiver","nameLocation":"3429:21:2","nodeType":"ErrorDefinition","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":449,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:2","nodeType":"VariableDeclaration","scope":451,"src":"3451:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":448,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:2"},"src":"3423:46:2"},{"documentation":{"id":452,"nodeType":"StructuredDocumentation","src":"3475:247:2","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":458,"name":"ERC721InsufficientApproval","nameLocation":"3733:26:2","nodeType":"ErrorDefinition","parameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":454,"mutability":"mutable","name":"operator","nameLocation":"3768:8:2","nodeType":"VariableDeclaration","scope":458,"src":"3760:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":453,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":456,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:2","nodeType":"VariableDeclaration","scope":458,"src":"3778:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:2"},"src":"3727:68:2"},{"documentation":{"id":459,"nodeType":"StructuredDocumentation","src":"3801:174:2","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":463,"name":"ERC721InvalidApprover","nameLocation":"3986:21:2","nodeType":"ErrorDefinition","parameters":{"id":462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"approver","nameLocation":"4016:8:2","nodeType":"VariableDeclaration","scope":463,"src":"4008:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":460,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:2"},"src":"3980:46:2"},{"documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"4032:197:2","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":468,"name":"ERC721InvalidOperator","nameLocation":"4240:21:2","nodeType":"ErrorDefinition","parameters":{"id":467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":466,"mutability":"mutable","name":"operator","nameLocation":"4270:8:2","nodeType":"VariableDeclaration","scope":468,"src":"4262:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":465,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:2"},"src":"4234:46:2"}],"scope":517,"src":"2190:2092:2","usedErrors":[427,432,441,446,451,458,463,468],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"4284:145:2","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":516,"linearizedBaseContracts":[516],"name":"IERC1155Errors","nameLocation":"4440:14:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":471,"nodeType":"StructuredDocumentation","src":"4461:361:2","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":481,"name":"ERC1155InsufficientBalance","nameLocation":"4833:26:2","nodeType":"ErrorDefinition","parameters":{"id":480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"sender","nameLocation":"4868:6:2","nodeType":"VariableDeclaration","scope":481,"src":"4860:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":472,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":475,"mutability":"mutable","name":"balance","nameLocation":"4884:7:2","nodeType":"VariableDeclaration","scope":481,"src":"4876:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"needed","nameLocation":"4901:6:2","nodeType":"VariableDeclaration","scope":481,"src":"4893:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":476,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":479,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:2","nodeType":"VariableDeclaration","scope":481,"src":"4909:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":478,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:2"},"src":"4827:99:2"},{"documentation":{"id":482,"nodeType":"StructuredDocumentation","src":"4932:152:2","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":486,"name":"ERC1155InvalidSender","nameLocation":"5095:20:2","nodeType":"ErrorDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":484,"mutability":"mutable","name":"sender","nameLocation":"5124:6:2","nodeType":"VariableDeclaration","scope":486,"src":"5116:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":483,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:2"},"src":"5089:43:2"},{"documentation":{"id":487,"nodeType":"StructuredDocumentation","src":"5138:159:2","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":491,"name":"ERC1155InvalidReceiver","nameLocation":"5308:22:2","nodeType":"ErrorDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:2","nodeType":"VariableDeclaration","scope":491,"src":"5331:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":488,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:2"},"src":"5302:47:2"},{"documentation":{"id":492,"nodeType":"StructuredDocumentation","src":"5355:256:2","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":498,"name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:2","nodeType":"ErrorDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":494,"mutability":"mutable","name":"operator","nameLocation":"5659:8:2","nodeType":"VariableDeclaration","scope":498,"src":"5651:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":493,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":496,"mutability":"mutable","name":"owner","nameLocation":"5677:5:2","nodeType":"VariableDeclaration","scope":498,"src":"5669:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":495,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:2"},"src":"5616:68:2"},{"documentation":{"id":499,"nodeType":"StructuredDocumentation","src":"5690:174:2","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":503,"name":"ERC1155InvalidApprover","nameLocation":"5875:22:2","nodeType":"ErrorDefinition","parameters":{"id":502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"approver","nameLocation":"5906:8:2","nodeType":"VariableDeclaration","scope":503,"src":"5898:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:2"},"src":"5869:47:2"},{"documentation":{"id":504,"nodeType":"StructuredDocumentation","src":"5922:197:2","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":508,"name":"ERC1155InvalidOperator","nameLocation":"6130:22:2","nodeType":"ErrorDefinition","parameters":{"id":507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":506,"mutability":"mutable","name":"operator","nameLocation":"6161:8:2","nodeType":"VariableDeclaration","scope":508,"src":"6153:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":505,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:2"},"src":"6124:47:2"},{"documentation":{"id":509,"nodeType":"StructuredDocumentation","src":"6177:280:2","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":515,"name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:2","nodeType":"ErrorDefinition","parameters":{"id":514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:2","nodeType":"VariableDeclaration","scope":515,"src":"6494:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":513,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:2","nodeType":"VariableDeclaration","scope":515,"src":"6513:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":512,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:2"},"src":"6462:73:2"}],"scope":517,"src":"4430:2107:2","usedErrors":[481,486,491,498,503,508,515],"usedEvents":[]}],"src":"112:6426:2"},"id":2},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[1165],"ERC20":[1031],"IERC20":[1109],"IERC20Errors":[421],"IERC20Metadata":[1135]},"id":1032,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":518,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":520,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1032,"sourceUnit":1110,"src":"131:36:3","symbolAliases":[{"foreign":{"id":519,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"139:6:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":522,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1032,"sourceUnit":1136,"src":"168:63:3","symbolAliases":[{"foreign":{"id":521,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"176:14:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":524,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1032,"sourceUnit":1166,"src":"232:48:3","symbolAliases":[{"foreign":{"id":523,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"240:7:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":526,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1032,"sourceUnit":517,"src":"281:65:3","symbolAliases":[{"foreign":{"id":525,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"289:12:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":528,"name":"Context","nameLocations":["1133:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1165,"src":"1133:7:3"},"id":529,"nodeType":"InheritanceSpecifier","src":"1133:7:3"},{"baseName":{"id":530,"name":"IERC20","nameLocations":["1142:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":1109,"src":"1142:6:3"},"id":531,"nodeType":"InheritanceSpecifier","src":"1142:6:3"},{"baseName":{"id":532,"name":"IERC20Metadata","nameLocations":["1150:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":1135,"src":"1150:14:3"},"id":533,"nodeType":"InheritanceSpecifier","src":"1150:14:3"},{"baseName":{"id":534,"name":"IERC20Errors","nameLocations":["1166:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":421,"src":"1166:12:3"},"id":535,"nodeType":"InheritanceSpecifier","src":"1166:12:3"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":527,"nodeType":"StructuredDocumentation","src":"348:757:3","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"id":1031,"linearizedBaseContracts":[1031,421,1135,1109,1165],"name":"ERC20","nameLocation":"1124:5:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":539,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:3","nodeType":"VariableDeclaration","scope":1031,"src":"1185:53:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":538,"keyName":"account","keyNameLocation":"1201:7:3","keyType":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":537,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":545,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:3","nodeType":"VariableDeclaration","scope":1031,"src":"1245:83:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":544,"keyName":"account","keyNameLocation":"1261:7:3","keyType":{"id":540,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":543,"keyName":"spender","keyNameLocation":"1288:7:3","keyType":{"id":541,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":542,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":547,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:3","nodeType":"VariableDeclaration","scope":1031,"src":"1335:28:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":546,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":549,"mutability":"mutable","name":"_name","nameLocation":"1385:5:3","nodeType":"VariableDeclaration","scope":1031,"src":"1370:20:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":548,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":551,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:3","nodeType":"VariableDeclaration","scope":1031,"src":"1396:22:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":550,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":567,"nodeType":"Block","src":"1638:57:3","statements":[{"expression":{"id":561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":559,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"1648:5:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":560,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1656:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":562,"nodeType":"ExpressionStatement","src":"1648:13:3"},{"expression":{"id":565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":563,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"1671:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":564,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"1681:7:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":566,"nodeType":"ExpressionStatement","src":"1671:17:3"}]},"documentation":{"id":552,"nodeType":"StructuredDocumentation","src":"1425:152:3","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":568,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":554,"mutability":"mutable","name":"name_","nameLocation":"1608:5:3","nodeType":"VariableDeclaration","scope":568,"src":"1594:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":553,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":556,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:3","nodeType":"VariableDeclaration","scope":568,"src":"1615:21:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":555,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:3"},"returnParameters":{"id":558,"nodeType":"ParameterList","parameters":[],"src":"1638:0:3"},"scope":1031,"src":"1582:113:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1122],"body":{"id":576,"nodeType":"Block","src":"1820:29:3","statements":[{"expression":{"id":574,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"1837:5:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":573,"id":575,"nodeType":"Return","src":"1830:12:3"}]},"documentation":{"id":569,"nodeType":"StructuredDocumentation","src":"1701:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":577,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:3","nodeType":"FunctionDefinition","parameters":{"id":570,"nodeType":"ParameterList","parameters":[],"src":"1773:2:3"},"returnParameters":{"id":573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":572,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":577,"src":"1805:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":571,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:3"},"scope":1031,"src":"1760:89:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1128],"body":{"id":585,"nodeType":"Block","src":"2024:31:3","statements":[{"expression":{"id":583,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"2041:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":582,"id":584,"nodeType":"Return","src":"2034:14:3"}]},"documentation":{"id":578,"nodeType":"StructuredDocumentation","src":"1855:102:3","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":586,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:3","nodeType":"FunctionDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[],"src":"1977:2:3"},"returnParameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":586,"src":"2009:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":580,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:3"},"scope":1031,"src":"1962:93:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1134],"body":{"id":594,"nodeType":"Block","src":"2744:26:3","statements":[{"expression":{"hexValue":"3138","id":592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:3","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":591,"id":593,"nodeType":"Return","src":"2754:9:3"}]},"documentation":{"id":587,"nodeType":"StructuredDocumentation","src":"2061:622:3","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":595,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:3","nodeType":"FunctionDefinition","parameters":{"id":588,"nodeType":"ParameterList","parameters":[],"src":"2705:2:3"},"returnParameters":{"id":591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":595,"src":"2737:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":589,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:3"},"scope":1031,"src":"2688:82:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1058],"body":{"id":603,"nodeType":"Block","src":"2864:36:3","statements":[{"expression":{"id":601,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"2881:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":600,"id":602,"nodeType":"Return","src":"2874:19:3"}]},"documentation":{"id":596,"nodeType":"StructuredDocumentation","src":"2776:22:3","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","id":604,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2812:11:3","nodeType":"FunctionDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[],"src":"2823:2:3"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":604,"src":"2855:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":598,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2854:9:3"},"scope":1031,"src":"2803:97:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1066],"body":{"id":616,"nodeType":"Block","src":"3007:42:3","statements":[{"expression":{"baseExpression":{"id":612,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":539,"src":"3024:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":614,"indexExpression":{"id":613,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"3034:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3024:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":611,"id":615,"nodeType":"Return","src":"3017:25:3"}]},"documentation":{"id":605,"nodeType":"StructuredDocumentation","src":"2906:22:3","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","id":617,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2942:9:3","nodeType":"FunctionDefinition","parameters":{"id":608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":607,"mutability":"mutable","name":"account","nameLocation":"2960:7:3","nodeType":"VariableDeclaration","scope":617,"src":"2952:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2951:17:3"},"returnParameters":{"id":611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":617,"src":"2998:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":609,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2997:9:3"},"scope":1031,"src":"2933:116:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1076],"body":{"id":640,"nodeType":"Block","src":"3319:103:3","statements":[{"assignments":[628],"declarations":[{"constant":false,"id":628,"mutability":"mutable","name":"owner","nameLocation":"3337:5:3","nodeType":"VariableDeclaration","scope":640,"src":"3329:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":627,"name":"address","nodeType":"ElementaryTypeName","src":"3329:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":631,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":629,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"3345:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3329:28:3"},{"expression":{"arguments":[{"id":633,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":628,"src":"3377:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":634,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":620,"src":"3384:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":635,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":622,"src":"3388:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":632,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"3367:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":637,"nodeType":"ExpressionStatement","src":"3367:27:3"},{"expression":{"hexValue":"74727565","id":638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3411:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":626,"id":639,"nodeType":"Return","src":"3404:11:3"}]},"documentation":{"id":618,"nodeType":"StructuredDocumentation","src":"3055:184:3","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":641,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3253:8:3","nodeType":"FunctionDefinition","parameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":620,"mutability":"mutable","name":"to","nameLocation":"3270:2:3","nodeType":"VariableDeclaration","scope":641,"src":"3262:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":619,"name":"address","nodeType":"ElementaryTypeName","src":"3262:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":622,"mutability":"mutable","name":"value","nameLocation":"3282:5:3","nodeType":"VariableDeclaration","scope":641,"src":"3274:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":621,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3261:27:3"},"returnParameters":{"id":626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":625,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":641,"src":"3313:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":624,"name":"bool","nodeType":"ElementaryTypeName","src":"3313:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3312:6:3"},"scope":1031,"src":"3244:178:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1086],"body":{"id":657,"nodeType":"Block","src":"3544:51:3","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":651,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"3561:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":653,"indexExpression":{"id":652,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"3573:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:18:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":655,"indexExpression":{"id":654,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"3580:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":650,"id":656,"nodeType":"Return","src":"3554:34:3"}]},"documentation":{"id":642,"nodeType":"StructuredDocumentation","src":"3428:22:3","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","id":658,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3464:9:3","nodeType":"FunctionDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":644,"mutability":"mutable","name":"owner","nameLocation":"3482:5:3","nodeType":"VariableDeclaration","scope":658,"src":"3474:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":643,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":646,"mutability":"mutable","name":"spender","nameLocation":"3497:7:3","nodeType":"VariableDeclaration","scope":658,"src":"3489:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":645,"name":"address","nodeType":"ElementaryTypeName","src":"3489:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3473:32:3"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":658,"src":"3535:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":648,"name":"uint256","nodeType":"ElementaryTypeName","src":"3535:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:9:3"},"scope":1031,"src":"3455:140:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1096],"body":{"id":681,"nodeType":"Block","src":"3981:107:3","statements":[{"assignments":[669],"declarations":[{"constant":false,"id":669,"mutability":"mutable","name":"owner","nameLocation":"3999:5:3","nodeType":"VariableDeclaration","scope":681,"src":"3991:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":668,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":672,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":670,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"4007:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3991:28:3"},{"expression":{"arguments":[{"id":674,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4038:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":675,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":661,"src":"4045:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"4054:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":673,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[922,982],"referencedDeclaration":922,"src":"4029:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":678,"nodeType":"ExpressionStatement","src":"4029:31:3"},{"expression":{"hexValue":"74727565","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4077:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":667,"id":680,"nodeType":"Return","src":"4070:11:3"}]},"documentation":{"id":659,"nodeType":"StructuredDocumentation","src":"3601:296:3","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":682,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3911:7:3","nodeType":"FunctionDefinition","parameters":{"id":664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":661,"mutability":"mutable","name":"spender","nameLocation":"3927:7:3","nodeType":"VariableDeclaration","scope":682,"src":"3919:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":660,"name":"address","nodeType":"ElementaryTypeName","src":"3919:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":663,"mutability":"mutable","name":"value","nameLocation":"3944:5:3","nodeType":"VariableDeclaration","scope":682,"src":"3936:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":662,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3918:32:3"},"returnParameters":{"id":667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":682,"src":"3975:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":665,"name":"bool","nodeType":"ElementaryTypeName","src":"3975:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3974:6:3"},"scope":1031,"src":"3902:186:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1108],"body":{"id":713,"nodeType":"Block","src":"4773:151:3","statements":[{"assignments":[695],"declarations":[{"constant":false,"id":695,"mutability":"mutable","name":"spender","nameLocation":"4791:7:3","nodeType":"VariableDeclaration","scope":713,"src":"4783:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":694,"name":"address","nodeType":"ElementaryTypeName","src":"4783:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":698,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":696,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"4801:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4783:30:3"},{"expression":{"arguments":[{"id":700,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"4839:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":701,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"4845:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"4854:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":699,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"4823:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":704,"nodeType":"ExpressionStatement","src":"4823:37:3"},{"expression":{"arguments":[{"id":706,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"4880:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":707,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"4886:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":708,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"4890:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":705,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"4870:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4870:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":710,"nodeType":"ExpressionStatement","src":"4870:26:3"},{"expression":{"hexValue":"74727565","id":711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4913:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":693,"id":712,"nodeType":"Return","src":"4906:11:3"}]},"documentation":{"id":683,"nodeType":"StructuredDocumentation","src":"4094:581:3","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":714,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4689:12:3","nodeType":"FunctionDefinition","parameters":{"id":690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":685,"mutability":"mutable","name":"from","nameLocation":"4710:4:3","nodeType":"VariableDeclaration","scope":714,"src":"4702:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":684,"name":"address","nodeType":"ElementaryTypeName","src":"4702:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":687,"mutability":"mutable","name":"to","nameLocation":"4724:2:3","nodeType":"VariableDeclaration","scope":714,"src":"4716:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":686,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":689,"mutability":"mutable","name":"value","nameLocation":"4736:5:3","nodeType":"VariableDeclaration","scope":714,"src":"4728:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":688,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:41:3"},"returnParameters":{"id":693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":714,"src":"4767:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":691,"name":"bool","nodeType":"ElementaryTypeName","src":"4767:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4766:6:3"},"scope":1031,"src":"4680:244:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":760,"nodeType":"Block","src":"5366:231:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":724,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"5380:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5396: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":726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5388:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"5388:7:3","typeDescriptions":{}}},"id":728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5380:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":738,"nodeType":"IfStatement","src":"5376:86:3","trueBody":{"id":737,"nodeType":"Block","src":"5400:62:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5448: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":732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5440:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":731,"name":"address","nodeType":"ElementaryTypeName","src":"5440:7:3","typeDescriptions":{}}},"id":734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5440:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":730,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":396,"src":"5421:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":736,"nodeType":"RevertStatement","src":"5414:37:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"5475:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5489: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":741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5481:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":740,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:3","typeDescriptions":{}}},"id":743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5475:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":753,"nodeType":"IfStatement","src":"5471:86:3","trueBody":{"id":752,"nodeType":"Block","src":"5493:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5543: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":747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5535:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":746,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:3","typeDescriptions":{}}},"id":749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":745,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":401,"src":"5514:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":751,"nodeType":"RevertStatement","src":"5507:39:3"}]}},{"expression":{"arguments":[{"id":755,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"5574:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":756,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"5580:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":757,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"5584:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":754,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":838,"src":"5566:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5566:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":759,"nodeType":"ExpressionStatement","src":"5566:24:3"}]},"documentation":{"id":715,"nodeType":"StructuredDocumentation","src":"4930:362:3","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":761,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5306:9:3","nodeType":"FunctionDefinition","parameters":{"id":722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":717,"mutability":"mutable","name":"from","nameLocation":"5324:4:3","nodeType":"VariableDeclaration","scope":761,"src":"5316:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":716,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":719,"mutability":"mutable","name":"to","nameLocation":"5338:2:3","nodeType":"VariableDeclaration","scope":761,"src":"5330:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":721,"mutability":"mutable","name":"value","nameLocation":"5350:5:3","nodeType":"VariableDeclaration","scope":761,"src":"5342:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":720,"name":"uint256","nodeType":"ElementaryTypeName","src":"5342:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5315:41:3"},"returnParameters":{"id":723,"nodeType":"ParameterList","parameters":[],"src":"5366:0:3"},"scope":1031,"src":"5297:300:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":837,"nodeType":"Block","src":"5987:1032:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":771,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"6001:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6017: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":773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6009:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":772,"name":"address","nodeType":"ElementaryTypeName","src":"6009:7:3","typeDescriptions":{}}},"id":775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6001:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":808,"nodeType":"Block","src":"6175:362:3","statements":[{"assignments":[783],"declarations":[{"constant":false,"id":783,"mutability":"mutable","name":"fromBalance","nameLocation":"6197:11:3","nodeType":"VariableDeclaration","scope":808,"src":"6189:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":782,"name":"uint256","nodeType":"ElementaryTypeName","src":"6189:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":787,"initialValue":{"baseExpression":{"id":784,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":539,"src":"6211:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":786,"indexExpression":{"id":785,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"6221:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6211:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6189:37:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":788,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"6244:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"6258:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6244:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":798,"nodeType":"IfStatement","src":"6240:115:3","trueBody":{"id":797,"nodeType":"Block","src":"6265:90:3","statements":[{"errorCall":{"arguments":[{"id":792,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"6315:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":793,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"6321:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"6334:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":791,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":391,"src":"6290:24:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:50:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":796,"nodeType":"RevertStatement","src":"6283:57:3"}]}},{"id":807,"nodeType":"UncheckedBlock","src":"6368:159:3","statements":[{"expression":{"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":799,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":539,"src":"6475:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":801,"indexExpression":{"id":800,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"6485:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6475:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":802,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"6493:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":803,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"6507:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6475:37:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":806,"nodeType":"ExpressionStatement","src":"6475:37:3"}]}]},"id":809,"nodeType":"IfStatement","src":"5997:540:3","trueBody":{"id":781,"nodeType":"Block","src":"6021:148:3","statements":[{"expression":{"id":779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":777,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"6137:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":778,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"6153:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6137:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":780,"nodeType":"ExpressionStatement","src":"6137:21:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":810,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6551:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6565: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":812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":811,"name":"address","nodeType":"ElementaryTypeName","src":"6557:7:3","typeDescriptions":{}}},"id":814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6557:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6551:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":829,"nodeType":"Block","src":"6766:206:3","statements":[{"id":828,"nodeType":"UncheckedBlock","src":"6780:182:3","statements":[{"expression":{"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":822,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":539,"src":"6925:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":824,"indexExpression":{"id":823,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6935:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6925:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":825,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"6942:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6925:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":827,"nodeType":"ExpressionStatement","src":"6925:22:3"}]}]},"id":830,"nodeType":"IfStatement","src":"6547:425:3","trueBody":{"id":821,"nodeType":"Block","src":"6569:191:3","statements":[{"id":820,"nodeType":"UncheckedBlock","src":"6583:167:3","statements":[{"expression":{"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":816,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"6714:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"6730:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6714:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":819,"nodeType":"ExpressionStatement","src":"6714:21:3"}]}]}},{"eventCall":{"arguments":[{"id":832,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"6996:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":833,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"7002:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"7006:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":831,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6987:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6987:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":836,"nodeType":"EmitStatement","src":"6982:30:3"}]},"documentation":{"id":762,"nodeType":"StructuredDocumentation","src":"5603:304:3","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":838,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5921:7:3","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":764,"mutability":"mutable","name":"from","nameLocation":"5937:4:3","nodeType":"VariableDeclaration","scope":838,"src":"5929:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":763,"name":"address","nodeType":"ElementaryTypeName","src":"5929:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":766,"mutability":"mutable","name":"to","nameLocation":"5951:2:3","nodeType":"VariableDeclaration","scope":838,"src":"5943:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":765,"name":"address","nodeType":"ElementaryTypeName","src":"5943:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"value","nameLocation":"5963:5:3","nodeType":"VariableDeclaration","scope":838,"src":"5955:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"5955:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5928:41:3"},"returnParameters":{"id":770,"nodeType":"ParameterList","parameters":[],"src":"5987:0:3"},"scope":1031,"src":"5912:1107:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":870,"nodeType":"Block","src":"7418:152:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":846,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":841,"src":"7432:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7451: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":848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":847,"name":"address","nodeType":"ElementaryTypeName","src":"7443:7:3","typeDescriptions":{}}},"id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7432:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":860,"nodeType":"IfStatement","src":"7428:91:3","trueBody":{"id":859,"nodeType":"Block","src":"7455:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7505: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":854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7497:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":853,"name":"address","nodeType":"ElementaryTypeName","src":"7497:7:3","typeDescriptions":{}}},"id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7497:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":852,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":401,"src":"7476:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7476:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":858,"nodeType":"RevertStatement","src":"7469:39:3"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7544: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":863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7536:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":862,"name":"address","nodeType":"ElementaryTypeName","src":"7536:7:3","typeDescriptions":{}}},"id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":866,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":841,"src":"7548:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":867,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":843,"src":"7557:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":861,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":838,"src":"7528:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:35:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":869,"nodeType":"ExpressionStatement","src":"7528:35:3"}]},"documentation":{"id":839,"nodeType":"StructuredDocumentation","src":"7025:332:3","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":871,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7371:5:3","nodeType":"FunctionDefinition","parameters":{"id":844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":841,"mutability":"mutable","name":"account","nameLocation":"7385:7:3","nodeType":"VariableDeclaration","scope":871,"src":"7377:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":840,"name":"address","nodeType":"ElementaryTypeName","src":"7377:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":843,"mutability":"mutable","name":"value","nameLocation":"7402:5:3","nodeType":"VariableDeclaration","scope":871,"src":"7394:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":842,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:32:3"},"returnParameters":{"id":845,"nodeType":"ParameterList","parameters":[],"src":"7418:0:3"},"scope":1031,"src":"7362:208:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":903,"nodeType":"Block","src":"7944:150:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":879,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7958:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7977: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":881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7969:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":880,"name":"address","nodeType":"ElementaryTypeName","src":"7969:7:3","typeDescriptions":{}}},"id":883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7969:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7958:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":893,"nodeType":"IfStatement","src":"7954:89:3","trueBody":{"id":892,"nodeType":"Block","src":"7981:62:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029: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":887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8021:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":886,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:3","typeDescriptions":{}}},"id":889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8021:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":885,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":396,"src":"8002:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8002:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":891,"nodeType":"RevertStatement","src":"7995:37:3"}]}},{"expression":{"arguments":[{"id":895,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"8060:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8077: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":897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8069:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":896,"name":"address","nodeType":"ElementaryTypeName","src":"8069:7:3","typeDescriptions":{}}},"id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":900,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"8081:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":894,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":838,"src":"8052:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:35:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":902,"nodeType":"ExpressionStatement","src":"8052:35:3"}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"7576:307:3","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":904,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7897:5:3","nodeType":"FunctionDefinition","parameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"account","nameLocation":"7911:7:3","nodeType":"VariableDeclaration","scope":904,"src":"7903:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":873,"name":"address","nodeType":"ElementaryTypeName","src":"7903:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"value","nameLocation":"7928:5:3","nodeType":"VariableDeclaration","scope":904,"src":"7920:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":875,"name":"uint256","nodeType":"ElementaryTypeName","src":"7920:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7902:32:3"},"returnParameters":{"id":878,"nodeType":"ParameterList","parameters":[],"src":"7944:0:3"},"scope":1031,"src":"7888:206:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":921,"nodeType":"Block","src":"8704:54:3","statements":[{"expression":{"arguments":[{"id":915,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"8723:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":916,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"8730:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":917,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"8739:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8746:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":914,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[922,982],"referencedDeclaration":982,"src":"8714:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8714:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":920,"nodeType":"ExpressionStatement","src":"8714:37:3"}]},"documentation":{"id":905,"nodeType":"StructuredDocumentation","src":"8100:525:3","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":922,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8639:8:3","nodeType":"FunctionDefinition","parameters":{"id":912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":907,"mutability":"mutable","name":"owner","nameLocation":"8656:5:3","nodeType":"VariableDeclaration","scope":922,"src":"8648:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":906,"name":"address","nodeType":"ElementaryTypeName","src":"8648:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"spender","nameLocation":"8671:7:3","nodeType":"VariableDeclaration","scope":922,"src":"8663:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":908,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":911,"mutability":"mutable","name":"value","nameLocation":"8688:5:3","nodeType":"VariableDeclaration","scope":922,"src":"8680:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":910,"name":"uint256","nodeType":"ElementaryTypeName","src":"8680:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8647:47:3"},"returnParameters":{"id":913,"nodeType":"ParameterList","parameters":[],"src":"8704:0:3"},"scope":1031,"src":"8630:128:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":981,"nodeType":"Block","src":"9703:334:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"9717:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9734: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":936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9726:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":935,"name":"address","nodeType":"ElementaryTypeName","src":"9726:7:3","typeDescriptions":{}}},"id":938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9726:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9717:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":948,"nodeType":"IfStatement","src":"9713:89:3","trueBody":{"id":947,"nodeType":"Block","src":"9738:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9788: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":942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9780:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":941,"name":"address","nodeType":"ElementaryTypeName","src":"9780:7:3","typeDescriptions":{}}},"id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9780:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":940,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":415,"src":"9759:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9759:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":946,"nodeType":"RevertStatement","src":"9752:39:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":949,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":927,"src":"9815:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9834: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":951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9826:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":950,"name":"address","nodeType":"ElementaryTypeName","src":"9826:7:3","typeDescriptions":{}}},"id":953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9826:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9815:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":963,"nodeType":"IfStatement","src":"9811:90:3","trueBody":{"id":962,"nodeType":"Block","src":"9838:63:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9887: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":957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9879:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":956,"name":"address","nodeType":"ElementaryTypeName","src":"9879:7:3","typeDescriptions":{}}},"id":959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9879:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":955,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"9859:19:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9859:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":961,"nodeType":"RevertStatement","src":"9852:38:3"}]}},{"expression":{"id":970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":964,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"9910:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":967,"indexExpression":{"id":965,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"9922:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9910:18:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":968,"indexExpression":{"id":966,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":927,"src":"9929:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9910:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"9940:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9910:35:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":971,"nodeType":"ExpressionStatement","src":"9910:35:3"},{"condition":{"id":972,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"9959:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":980,"nodeType":"IfStatement","src":"9955:76:3","trueBody":{"id":979,"nodeType":"Block","src":"9970:61:3","statements":[{"eventCall":{"arguments":[{"id":974,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"9998:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":975,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":927,"src":"10005:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"10014:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":973,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"9989:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9989:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":978,"nodeType":"EmitStatement","src":"9984:36:3"}]}}]},"documentation":{"id":923,"nodeType":"StructuredDocumentation","src":"8764:836:3","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":982,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9614:8:3","nodeType":"FunctionDefinition","parameters":{"id":932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"owner","nameLocation":"9631:5:3","nodeType":"VariableDeclaration","scope":982,"src":"9623:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":924,"name":"address","nodeType":"ElementaryTypeName","src":"9623:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":927,"mutability":"mutable","name":"spender","nameLocation":"9646:7:3","nodeType":"VariableDeclaration","scope":982,"src":"9638:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":926,"name":"address","nodeType":"ElementaryTypeName","src":"9638:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":929,"mutability":"mutable","name":"value","nameLocation":"9663:5:3","nodeType":"VariableDeclaration","scope":982,"src":"9655:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":928,"name":"uint256","nodeType":"ElementaryTypeName","src":"9655:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":931,"mutability":"mutable","name":"emitEvent","nameLocation":"9675:9:3","nodeType":"VariableDeclaration","scope":982,"src":"9670:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":930,"name":"bool","nodeType":"ElementaryTypeName","src":"9670:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9622:63:3"},"returnParameters":{"id":933,"nodeType":"ParameterList","parameters":[],"src":"9703:0:3"},"scope":1031,"src":"9605:432:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1029,"nodeType":"Block","src":"10408:387:3","statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"currentAllowance","nameLocation":"10426:16:3","nodeType":"VariableDeclaration","scope":1029,"src":"10418:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"10418:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":998,"initialValue":{"arguments":[{"id":995,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":985,"src":"10455:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":996,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"10462:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":994,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"10445:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10445:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10418:52:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":999,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"10484:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":1002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10508:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1001,"name":"uint256","nodeType":"ElementaryTypeName","src":"10508:7:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1000,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10503:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10503:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10517:3:3","memberName":"max","nodeType":"MemberAccess","src":"10503:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10484:36:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1028,"nodeType":"IfStatement","src":"10480:309:3","trueBody":{"id":1027,"nodeType":"Block","src":"10522:267:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1006,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"10540:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1007,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"10559:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10540:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1016,"nodeType":"IfStatement","src":"10536:130:3","trueBody":{"id":1015,"nodeType":"Block","src":"10566:100:3","statements":[{"errorCall":{"arguments":[{"id":1010,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"10618:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1011,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"10627:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1012,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"10645:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1009,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":410,"src":"10591:26:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10591:60:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1014,"nodeType":"RevertStatement","src":"10584:67:3"}]}},{"id":1026,"nodeType":"UncheckedBlock","src":"10679:100:3","statements":[{"expression":{"arguments":[{"id":1018,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":985,"src":"10716:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1019,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"10723:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1020,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"10732:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"10751:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10732:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":1023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10758:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1017,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[922,982],"referencedDeclaration":982,"src":"10707:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10707:57:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1025,"nodeType":"ExpressionStatement","src":"10707:57:3"}]}]}}]},"documentation":{"id":983,"nodeType":"StructuredDocumentation","src":"10043:271:3","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":1030,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10328:15:3","nodeType":"FunctionDefinition","parameters":{"id":990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":985,"mutability":"mutable","name":"owner","nameLocation":"10352:5:3","nodeType":"VariableDeclaration","scope":1030,"src":"10344:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":984,"name":"address","nodeType":"ElementaryTypeName","src":"10344:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":987,"mutability":"mutable","name":"spender","nameLocation":"10367:7:3","nodeType":"VariableDeclaration","scope":1030,"src":"10359:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":986,"name":"address","nodeType":"ElementaryTypeName","src":"10359:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":989,"mutability":"mutable","name":"value","nameLocation":"10384:5:3","nodeType":"VariableDeclaration","scope":1030,"src":"10376:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":988,"name":"uint256","nodeType":"ElementaryTypeName","src":"10376:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10343:47:3"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[],"src":"10408:0:3"},"scope":1031,"src":"10319:476:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1032,"src":"1106:9691:3","usedErrors":[391,396,401,410,415,420],"usedEvents":[1043,1052]}],"src":"105:10693:3"},"id":3},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1109]},"id":1110,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1033,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":1034,"nodeType":"StructuredDocumentation","src":"133:71:4","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":1109,"linearizedBaseContracts":[1109],"name":"IERC20","nameLocation":"215:6:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1035,"nodeType":"StructuredDocumentation","src":"228:158:4","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1043,"name":"Transfer","nameLocation":"397:8:4","nodeType":"EventDefinition","parameters":{"id":1042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1037,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:4","nodeType":"VariableDeclaration","scope":1043,"src":"406:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1036,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1039,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:4","nodeType":"VariableDeclaration","scope":1043,"src":"428:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1038,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1041,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:4","nodeType":"VariableDeclaration","scope":1043,"src":"448:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1040,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:4"},"src":"391:72:4"},{"anonymous":false,"documentation":{"id":1044,"nodeType":"StructuredDocumentation","src":"469:148:4","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1052,"name":"Approval","nameLocation":"628:8:4","nodeType":"EventDefinition","parameters":{"id":1051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1046,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:4","nodeType":"VariableDeclaration","scope":1052,"src":"637:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1045,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1048,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:4","nodeType":"VariableDeclaration","scope":1052,"src":"660:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1047,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1050,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:4","nodeType":"VariableDeclaration","scope":1052,"src":"685:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1049,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:4"},"src":"622:78:4"},{"documentation":{"id":1053,"nodeType":"StructuredDocumentation","src":"706:65:4","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":1058,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:4","nodeType":"FunctionDefinition","parameters":{"id":1054,"nodeType":"ParameterList","parameters":[],"src":"796:2:4"},"returnParameters":{"id":1057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1058,"src":"822:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1055,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:4"},"scope":1109,"src":"776:55:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"837:71:4","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":1066,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:4","nodeType":"FunctionDefinition","parameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"account","nameLocation":"940:7:4","nodeType":"VariableDeclaration","scope":1066,"src":"932:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1060,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:4"},"returnParameters":{"id":1065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1066,"src":"972:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1063,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:4"},"scope":1109,"src":"913:68:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1067,"nodeType":"StructuredDocumentation","src":"987:213:4","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":1076,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:4","nodeType":"FunctionDefinition","parameters":{"id":1072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1069,"mutability":"mutable","name":"to","nameLocation":"1231:2:4","nodeType":"VariableDeclaration","scope":1076,"src":"1223:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1068,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1071,"mutability":"mutable","name":"value","nameLocation":"1243:5:4","nodeType":"VariableDeclaration","scope":1076,"src":"1235:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1070,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:4"},"returnParameters":{"id":1075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1076,"src":"1268:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1073,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:4"},"scope":1109,"src":"1205:69:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1077,"nodeType":"StructuredDocumentation","src":"1280:264:4","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":1086,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:4","nodeType":"FunctionDefinition","parameters":{"id":1082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1079,"mutability":"mutable","name":"owner","nameLocation":"1576:5:4","nodeType":"VariableDeclaration","scope":1086,"src":"1568:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1078,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1081,"mutability":"mutable","name":"spender","nameLocation":"1591:7:4","nodeType":"VariableDeclaration","scope":1086,"src":"1583:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1080,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:4"},"returnParameters":{"id":1085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1086,"src":"1623:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1083,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:4"},"scope":1109,"src":"1549:83:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1087,"nodeType":"StructuredDocumentation","src":"1638:667:4","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1096,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:4","nodeType":"FunctionDefinition","parameters":{"id":1092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1089,"mutability":"mutable","name":"spender","nameLocation":"2335:7:4","nodeType":"VariableDeclaration","scope":1096,"src":"2327:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1088,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1091,"mutability":"mutable","name":"value","nameLocation":"2352:5:4","nodeType":"VariableDeclaration","scope":1096,"src":"2344:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:4"},"returnParameters":{"id":1095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1094,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1096,"src":"2377:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1093,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:4"},"scope":1109,"src":"2310:73:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1097,"nodeType":"StructuredDocumentation","src":"2389:297:4","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1108,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:4","nodeType":"FunctionDefinition","parameters":{"id":1104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1099,"mutability":"mutable","name":"from","nameLocation":"2721:4:4","nodeType":"VariableDeclaration","scope":1108,"src":"2713:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1098,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1101,"mutability":"mutable","name":"to","nameLocation":"2735:2:4","nodeType":"VariableDeclaration","scope":1108,"src":"2727:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1100,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"value","nameLocation":"2747:5:4","nodeType":"VariableDeclaration","scope":1108,"src":"2739:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:4"},"returnParameters":{"id":1107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1108,"src":"2772:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1105,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:4"},"scope":1109,"src":"2691:87:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1110,"src":"205:2575:4","usedErrors":[],"usedEvents":[1043,1052]}],"src":"106:2675:4"},"id":4},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[1109],"IERC20Metadata":[1135]},"id":1136,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1111,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"125:24:5"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":1113,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1136,"sourceUnit":1110,"src":"151:37:5","symbolAliases":[{"foreign":{"id":1112,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"159:6:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1115,"name":"IERC20","nameLocations":["306:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":1109,"src":"306:6:5"},"id":1116,"nodeType":"InheritanceSpecifier","src":"306:6:5"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"190:87:5","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":1135,"linearizedBaseContracts":[1135,1109],"name":"IERC20Metadata","nameLocation":"288:14:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1117,"nodeType":"StructuredDocumentation","src":"319:54:5","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":1122,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:5","nodeType":"FunctionDefinition","parameters":{"id":1118,"nodeType":"ParameterList","parameters":[],"src":"391:2:5"},"returnParameters":{"id":1121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1122,"src":"417:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1119,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:5"},"scope":1135,"src":"378:54:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1123,"nodeType":"StructuredDocumentation","src":"438:56:5","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":1128,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:5","nodeType":"FunctionDefinition","parameters":{"id":1124,"nodeType":"ParameterList","parameters":[],"src":"514:2:5"},"returnParameters":{"id":1127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1128,"src":"540:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1125,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:5"},"scope":1135,"src":"499:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1129,"nodeType":"StructuredDocumentation","src":"561:65:5","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":1134,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:5","nodeType":"FunctionDefinition","parameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"648:2:5"},"returnParameters":{"id":1133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1134,"src":"674:5:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1131,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:5"},"scope":1135,"src":"631:50:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1136,"src":"278:405:5","usedErrors":[],"usedEvents":[1043,1052]}],"src":"125:559:5"},"id":5},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[1165]},"id":1166,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1137,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:6"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1138,"nodeType":"StructuredDocumentation","src":"127:496:6","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":1165,"linearizedBaseContracts":[1165],"name":"Context","nameLocation":"642:7:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":1146,"nodeType":"Block","src":"718:34:6","statements":[{"expression":{"expression":{"id":1143,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:6","memberName":"sender","nodeType":"MemberAccess","src":"735:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1142,"id":1145,"nodeType":"Return","src":"728:17:6"}]},"id":1147,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:6","nodeType":"FunctionDefinition","parameters":{"id":1139,"nodeType":"ParameterList","parameters":[],"src":"675:2:6"},"returnParameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1147,"src":"709:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:6"},"scope":1165,"src":"656:96:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1155,"nodeType":"Block","src":"825:32:6","statements":[{"expression":{"expression":{"id":1152,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:6","memberName":"data","nodeType":"MemberAccess","src":"842:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1151,"id":1154,"nodeType":"Return","src":"835:15:6"}]},"id":1156,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:6","nodeType":"FunctionDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[],"src":"775:2:6"},"returnParameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1156,"src":"809:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:6"},"scope":1165,"src":"758:99:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1163,"nodeType":"Block","src":"935:25:6","statements":[{"expression":{"hexValue":"30","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1160,"id":1162,"nodeType":"Return","src":"945:8:6"}]},"id":1164,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:6","nodeType":"FunctionDefinition","parameters":{"id":1157,"nodeType":"ParameterList","parameters":[],"src":"892:2:6"},"returnParameters":{"id":1160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1164,"src":"926:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:6"},"scope":1165,"src":"863:97:6","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1166,"src":"624:338:6","usedErrors":[],"usedEvents":[]}],"src":"101:862:6"},"id":6},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[1217]},"id":1218,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1167,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":1168,"nodeType":"StructuredDocumentation","src":"125:489:7","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":1217,"linearizedBaseContracts":[1217],"name":"Panic","nameLocation":"665:5:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":1169,"nodeType":"StructuredDocumentation","src":"677:36:7","text":"@dev generic / unspecified error"},"id":1172,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:7","nodeType":"VariableDeclaration","scope":1217,"src":"718:40:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1170,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":1171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":1173,"nodeType":"StructuredDocumentation","src":"764:37:7","text":"@dev used by the assert() builtin"},"id":1176,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:7","nodeType":"VariableDeclaration","scope":1217,"src":"806:39:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1174,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":1175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":1177,"nodeType":"StructuredDocumentation","src":"851:41:7","text":"@dev arithmetic underflow or overflow"},"id":1180,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:7","nodeType":"VariableDeclaration","scope":1217,"src":"897:47:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1178,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":1179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:7","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":1181,"nodeType":"StructuredDocumentation","src":"950:35:7","text":"@dev division or modulo by zero"},"id":1184,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:7","nodeType":"VariableDeclaration","scope":1217,"src":"990:49:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1182,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":1183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:7","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":1185,"nodeType":"StructuredDocumentation","src":"1045:30:7","text":"@dev enum conversion error"},"id":1188,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:7","nodeType":"VariableDeclaration","scope":1217,"src":"1080:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1186,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:7","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":1189,"nodeType":"StructuredDocumentation","src":"1140:36:7","text":"@dev invalid encoding in storage"},"id":1192,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:7","nodeType":"VariableDeclaration","scope":1217,"src":"1181:55:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:7","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":1193,"nodeType":"StructuredDocumentation","src":"1242:24:7","text":"@dev empty array pop"},"id":1196,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:7","nodeType":"VariableDeclaration","scope":1217,"src":"1271:48:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1194,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":1195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:7","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":1197,"nodeType":"StructuredDocumentation","src":"1325:35:7","text":"@dev array out of bounds access"},"id":1200,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:7","nodeType":"VariableDeclaration","scope":1217,"src":"1365:52:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":1199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:7","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":1201,"nodeType":"StructuredDocumentation","src":"1423:65:7","text":"@dev resource error (too large allocation or too large array)"},"id":1204,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:7","nodeType":"VariableDeclaration","scope":1217,"src":"1493:47:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1202,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":1203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:7","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":1205,"nodeType":"StructuredDocumentation","src":"1546:42:7","text":"@dev calling invalid internal function"},"id":1208,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:7","nodeType":"VariableDeclaration","scope":1217,"src":"1593:58:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1206,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:7","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":1215,"nodeType":"Block","src":"1819:151:7","statements":[{"AST":{"nativeSrc":"1854:110:7","nodeType":"YulBlock","src":"1854:110:7","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:7","nodeType":"YulLiteral","src":"1875:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:7","nodeType":"YulLiteral","src":"1881:10:7","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:7","nodeType":"YulIdentifier","src":"1868:6:7"},"nativeSrc":"1868:24:7","nodeType":"YulFunctionCall","src":"1868:24:7"},"nativeSrc":"1868:24:7","nodeType":"YulExpressionStatement","src":"1868:24:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:7","nodeType":"YulLiteral","src":"1912:4:7","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:7","nodeType":"YulIdentifier","src":"1918:4:7"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:7","nodeType":"YulIdentifier","src":"1905:6:7"},"nativeSrc":"1905:18:7","nodeType":"YulFunctionCall","src":"1905:18:7"},"nativeSrc":"1905:18:7","nodeType":"YulExpressionStatement","src":"1905:18:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:7","nodeType":"YulLiteral","src":"1943:4:7","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:7","nodeType":"YulLiteral","src":"1949:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:7","nodeType":"YulIdentifier","src":"1936:6:7"},"nativeSrc":"1936:18:7","nodeType":"YulFunctionCall","src":"1936:18:7"},"nativeSrc":"1936:18:7","nodeType":"YulExpressionStatement","src":"1936:18:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":1211,"isOffset":false,"isSlot":false,"src":"1918:4:7","valueSize":1}],"flags":["memory-safe"],"id":1214,"nodeType":"InlineAssembly","src":"1829:135:7"}]},"documentation":{"id":1209,"nodeType":"StructuredDocumentation","src":"1658:113:7","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":1216,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:7","nodeType":"FunctionDefinition","parameters":{"id":1212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1211,"mutability":"mutable","name":"code","nameLocation":"1799:4:7","nodeType":"VariableDeclaration","scope":1216,"src":"1791:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1210,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:7"},"returnParameters":{"id":1213,"nodeType":"ParameterList","parameters":[],"src":"1819:0:7"},"scope":1217,"src":"1776:194:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1218,"src":"657:1315:7","usedErrors":[],"usedEvents":[]}],"src":"99:1874:7"},"id":7},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[4710],"SafeCast":[6475],"SignedMath":[6619],"Strings":[2619]},"id":2620,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1219,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:8"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":1221,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2620,"sourceUnit":4711,"src":"127:37:8","symbolAliases":[{"foreign":{"id":1220,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"135:4:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./math/SafeCast.sol","id":1223,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2620,"sourceUnit":6476,"src":"165:45:8","symbolAliases":[{"foreign":{"id":1222,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"173:8:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":1225,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2620,"sourceUnit":6620,"src":"211:49:8","symbolAliases":[{"foreign":{"id":1224,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6619,"src":"219:10:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1226,"nodeType":"StructuredDocumentation","src":"262:34:8","text":" @dev String operations."},"fullyImplemented":true,"id":2619,"linearizedBaseContracts":[2619],"name":"Strings","nameLocation":"305:7:8","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1228,"libraryName":{"id":1227,"name":"SafeCast","nameLocations":["325:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":6475,"src":"325:8:8"},"nodeType":"UsingForDirective","src":"319:21:8"},{"constant":true,"id":1231,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"371:10:8","nodeType":"VariableDeclaration","scope":2619,"src":"346:56:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1229,"name":"bytes16","nodeType":"ElementaryTypeName","src":"346:7:8","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"384:18:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":1234,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"431:14:8","nodeType":"VariableDeclaration","scope":2619,"src":"408:42:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1232,"name":"uint8","nodeType":"ElementaryTypeName","src":"408:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"448:2:8","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"id":1270,"mutability":"constant","name":"SPECIAL_CHARS_LOOKUP","nameLocation":"481:20:8","nodeType":"VariableDeclaration","scope":2619,"src":"456:302:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1235,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"},"id":1269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_17179883264_by_1","typeString":"int_const 17179883264"},"id":1264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_14080_by_1","typeString":"int_const 14080"},"id":1259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_5888_by_1","typeString":"int_const 5888"},"id":1254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_1792_by_1","typeString":"int_const 1792"},"id":1249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_768_by_1","typeString":"int_const 768"},"id":1244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":1238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"513:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783038","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"518:4:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"513:9:8","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":1239,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"512:11:8","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":1242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"552:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783039","id":1241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:4:8","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"552:9:8","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}}],"id":1243,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"551:11:8","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}},"src":"512:50:8","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":1247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"585:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783061","id":1246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"590:4:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"585:9:8","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}}],"id":1248,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"584:11:8","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}},"src":"512:83:8","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":1252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"622:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783063","id":1251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:4:8","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"622:9:8","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}}],"id":1253,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"621:11:8","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}},"src":"512:120:8","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":1257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"661:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783064","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"666:4:8","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"661:9:8","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}}],"id":1258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"660:11:8","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}},"src":"512:159:8","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":1262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783232","id":1261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"711:4:8","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"706:9:8","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}}],"id":1263,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"705:11:8","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"src":"512:204:8","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":1267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"748:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783563","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"753:4:8","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"748:9:8","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"747:11:8","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}},"src":"512:246:8","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"}},"visibility":"private"},{"documentation":{"id":1271,"nodeType":"StructuredDocumentation","src":"778:81:8","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":1277,"name":"StringsInsufficientHexLength","nameLocation":"870:28:8","nodeType":"ErrorDefinition","parameters":{"id":1276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1273,"mutability":"mutable","name":"value","nameLocation":"907:5:8","nodeType":"VariableDeclaration","scope":1277,"src":"899:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1272,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1275,"mutability":"mutable","name":"length","nameLocation":"922:6:8","nodeType":"VariableDeclaration","scope":1277,"src":"914:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1274,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"898:31:8"},"src":"864:66:8"},{"documentation":{"id":1278,"nodeType":"StructuredDocumentation","src":"936:108:8","text":" @dev The string being parsed contains characters that are not in scope of the given base."},"errorSelector":"94e2737e","id":1280,"name":"StringsInvalidChar","nameLocation":"1055:18:8","nodeType":"ErrorDefinition","parameters":{"id":1279,"nodeType":"ParameterList","parameters":[],"src":"1073:2:8"},"src":"1049:27:8"},{"documentation":{"id":1281,"nodeType":"StructuredDocumentation","src":"1082:84:8","text":" @dev The string being parsed is not a properly formatted address."},"errorSelector":"1d15ae44","id":1283,"name":"StringsInvalidAddressFormat","nameLocation":"1177:27:8","nodeType":"ErrorDefinition","parameters":{"id":1282,"nodeType":"ParameterList","parameters":[],"src":"1204:2:8"},"src":"1171:36:8"},{"body":{"id":1330,"nodeType":"Block","src":"1379:563:8","statements":[{"id":1329,"nodeType":"UncheckedBlock","src":"1389:547:8","statements":[{"assignments":[1292],"declarations":[{"constant":false,"id":1292,"mutability":"mutable","name":"length","nameLocation":"1421:6:8","nodeType":"VariableDeclaration","scope":1329,"src":"1413:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1291,"name":"uint256","nodeType":"ElementaryTypeName","src":"1413:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1299,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"1441:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1293,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"1430:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4710_$","typeString":"type(library Math)"}},"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:5:8","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"1430:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1430:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1450:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1430:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1413:38:8"},{"assignments":[1301],"declarations":[{"constant":false,"id":1301,"mutability":"mutable","name":"buffer","nameLocation":"1479:6:8","nodeType":"VariableDeclaration","scope":1329,"src":"1465:20:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1300,"name":"string","nodeType":"ElementaryTypeName","src":"1465:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1306,"initialValue":{"arguments":[{"id":1304,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"1499:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1488:10:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1302,"name":"string","nodeType":"ElementaryTypeName","src":"1492:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1488:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1465:41:8"},{"assignments":[1308],"declarations":[{"constant":false,"id":1308,"mutability":"mutable","name":"ptr","nameLocation":"1528:3:8","nodeType":"VariableDeclaration","scope":1329,"src":"1520:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1307,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1309,"nodeType":"VariableDeclarationStatement","src":"1520:11:8"},{"AST":{"nativeSrc":"1570:69:8","nodeType":"YulBlock","src":"1570:69:8","statements":[{"nativeSrc":"1588:37:8","nodeType":"YulAssignment","src":"1588:37:8","value":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"1603:6:8","nodeType":"YulIdentifier","src":"1603:6:8"},{"kind":"number","nativeSrc":"1611:4:8","nodeType":"YulLiteral","src":"1611:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1599:3:8","nodeType":"YulIdentifier","src":"1599:3:8"},"nativeSrc":"1599:17:8","nodeType":"YulFunctionCall","src":"1599:17:8"},{"name":"length","nativeSrc":"1618:6:8","nodeType":"YulIdentifier","src":"1618:6:8"}],"functionName":{"name":"add","nativeSrc":"1595:3:8","nodeType":"YulIdentifier","src":"1595:3:8"},"nativeSrc":"1595:30:8","nodeType":"YulFunctionCall","src":"1595:30:8"},"variableNames":[{"name":"ptr","nativeSrc":"1588:3:8","nodeType":"YulIdentifier","src":"1588:3:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1301,"isOffset":false,"isSlot":false,"src":"1603:6:8","valueSize":1},{"declaration":1292,"isOffset":false,"isSlot":false,"src":"1618:6:8","valueSize":1},{"declaration":1308,"isOffset":false,"isSlot":false,"src":"1588:3:8","valueSize":1}],"flags":["memory-safe"],"id":1310,"nodeType":"InlineAssembly","src":"1545:94:8"},{"body":{"id":1325,"nodeType":"Block","src":"1665:234:8","statements":[{"expression":{"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1683:5:8","subExpression":{"id":1312,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"1683:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1314,"nodeType":"ExpressionStatement","src":"1683:5:8"},{"AST":{"nativeSrc":"1731:86:8","nodeType":"YulBlock","src":"1731:86:8","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1761:3:8","nodeType":"YulIdentifier","src":"1761:3:8"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1775:5:8","nodeType":"YulIdentifier","src":"1775:5:8"},{"kind":"number","nativeSrc":"1782:2:8","nodeType":"YulLiteral","src":"1782:2:8","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1771:3:8","nodeType":"YulIdentifier","src":"1771:3:8"},"nativeSrc":"1771:14:8","nodeType":"YulFunctionCall","src":"1771:14:8"},{"name":"HEX_DIGITS","nativeSrc":"1787:10:8","nodeType":"YulIdentifier","src":"1787:10:8"}],"functionName":{"name":"byte","nativeSrc":"1766:4:8","nodeType":"YulIdentifier","src":"1766:4:8"},"nativeSrc":"1766:32:8","nodeType":"YulFunctionCall","src":"1766:32:8"}],"functionName":{"name":"mstore8","nativeSrc":"1753:7:8","nodeType":"YulIdentifier","src":"1753:7:8"},"nativeSrc":"1753:46:8","nodeType":"YulFunctionCall","src":"1753:46:8"},"nativeSrc":"1753:46:8","nodeType":"YulExpressionStatement","src":"1753:46:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":1231,"isOffset":false,"isSlot":false,"src":"1787:10:8","valueSize":1},{"declaration":1308,"isOffset":false,"isSlot":false,"src":"1761:3:8","valueSize":1},{"declaration":1286,"isOffset":false,"isSlot":false,"src":"1775:5:8","valueSize":1}],"flags":["memory-safe"],"id":1315,"nodeType":"InlineAssembly","src":"1706:111:8"},{"expression":{"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1316,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"1834:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1843:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1834:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1319,"nodeType":"ExpressionStatement","src":"1834:11:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"1867:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1867:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1324,"nodeType":"IfStatement","src":"1863:21:8","trueBody":{"id":1323,"nodeType":"Break","src":"1879:5:8"}}]},"condition":{"hexValue":"74727565","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1659:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1326,"nodeType":"WhileStatement","src":"1652:247:8"},{"expression":{"id":1327,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"1919:6:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1290,"id":1328,"nodeType":"Return","src":"1912:13:8"}]}]},"documentation":{"id":1284,"nodeType":"StructuredDocumentation","src":"1213:90:8","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1331,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1317:8:8","nodeType":"FunctionDefinition","parameters":{"id":1287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1286,"mutability":"mutable","name":"value","nameLocation":"1334:5:8","nodeType":"VariableDeclaration","scope":1331,"src":"1326:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1285,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1325:15:8"},"returnParameters":{"id":1290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1331,"src":"1364:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1288,"name":"string","nodeType":"ElementaryTypeName","src":"1364:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1363:15:8"},"scope":2619,"src":"1308:634:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1356,"nodeType":"Block","src":"2118:92:8","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"2149:5:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2157:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2149:9:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2167:2:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2149:20:8","trueExpression":{"hexValue":"2d","id":1345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2161:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"2195:5:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1349,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6619,"src":"2180:10:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$6619_$","typeString":"type(library SignedMath)"}},"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2191:3:8","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":6618,"src":"2180:14:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2180:21:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1348,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"2171:8:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2171:31:8","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":1340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2135:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1339,"name":"string","nodeType":"ElementaryTypeName","src":"2135:6:8","typeDescriptions":{}}},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2142:6:8","memberName":"concat","nodeType":"MemberAccess","src":"2135:13:8","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:68:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1338,"id":1355,"nodeType":"Return","src":"2128:75:8"}]},"documentation":{"id":1332,"nodeType":"StructuredDocumentation","src":"1948:89:8","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":1357,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"2051:14:8","nodeType":"FunctionDefinition","parameters":{"id":1335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1334,"mutability":"mutable","name":"value","nameLocation":"2073:5:8","nodeType":"VariableDeclaration","scope":1357,"src":"2066:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1333,"name":"int256","nodeType":"ElementaryTypeName","src":"2066:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2065:14:8"},"returnParameters":{"id":1338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1357,"src":"2103:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1336,"name":"string","nodeType":"ElementaryTypeName","src":"2103:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2102:15:8"},"scope":2619,"src":"2042:168:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1376,"nodeType":"Block","src":"2389:100:8","statements":[{"id":1375,"nodeType":"UncheckedBlock","src":"2399:84:8","statements":[{"expression":{"arguments":[{"id":1366,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1360,"src":"2442:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1369,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1360,"src":"2461:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1367,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"2449:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4710_$","typeString":"type(library Math)"}},"id":1368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2454:6:8","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":4653,"src":"2449:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2449:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2470:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2449:22:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1365,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1377,1460,1480],"referencedDeclaration":1460,"src":"2430:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2430:42:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1364,"id":1374,"nodeType":"Return","src":"2423:49:8"}]}]},"documentation":{"id":1358,"nodeType":"StructuredDocumentation","src":"2216:94:8","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1377,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2324:11:8","nodeType":"FunctionDefinition","parameters":{"id":1361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1360,"mutability":"mutable","name":"value","nameLocation":"2344:5:8","nodeType":"VariableDeclaration","scope":1377,"src":"2336:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1359,"name":"uint256","nodeType":"ElementaryTypeName","src":"2336:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2335:15:8"},"returnParameters":{"id":1364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1377,"src":"2374:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1362,"name":"string","nodeType":"ElementaryTypeName","src":"2374:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2373:15:8"},"scope":2619,"src":"2315:174:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1459,"nodeType":"Block","src":"2702:435:8","statements":[{"assignments":[1388],"declarations":[{"constant":false,"id":1388,"mutability":"mutable","name":"localValue","nameLocation":"2720:10:8","nodeType":"VariableDeclaration","scope":1459,"src":"2712:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1387,"name":"uint256","nodeType":"ElementaryTypeName","src":"2712:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1390,"initialValue":{"id":1389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"2733:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2712:26:8"},{"assignments":[1392],"declarations":[{"constant":false,"id":1392,"mutability":"mutable","name":"buffer","nameLocation":"2761:6:8","nodeType":"VariableDeclaration","scope":1459,"src":"2748:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1391,"name":"bytes","nodeType":"ElementaryTypeName","src":"2748:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1401,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2780:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1396,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"2784:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2780:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2793:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2780:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2770:9:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1393,"name":"bytes","nodeType":"ElementaryTypeName","src":"2774:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2770:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2748:47:8"},{"expression":{"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1402,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1392,"src":"2805:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1404,"indexExpression":{"hexValue":"30","id":1403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2812:1:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2817:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2805:15:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1407,"nodeType":"ExpressionStatement","src":"2805:15:8"},{"expression":{"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1408,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1392,"src":"2830:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1410,"indexExpression":{"hexValue":"31","id":1409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2837:1:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2842:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2830:15:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1413,"nodeType":"ExpressionStatement","src":"2830:15:8"},{"body":{"id":1442,"nodeType":"Block","src":"2900:95:8","statements":[{"expression":{"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1428,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1392,"src":"2914:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1430,"indexExpression":{"id":1429,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1415,"src":"2921:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2914:9:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1431,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1231,"src":"2926:10:8","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1435,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1432,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1388,"src":"2937:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2950:3:8","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2937:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2926:28:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2914:40:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1437,"nodeType":"ExpressionStatement","src":"2914:40:8"},{"expression":{"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1438,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1388,"src":"2968:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2983:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2968:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1441,"nodeType":"ExpressionStatement","src":"2968:16:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1422,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1415,"src":"2888:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2888:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1443,"initializationExpression":{"assignments":[1415],"declarations":[{"constant":false,"id":1415,"mutability":"mutable","name":"i","nameLocation":"2868:1:8","nodeType":"VariableDeclaration","scope":1443,"src":"2860:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1414,"name":"uint256","nodeType":"ElementaryTypeName","src":"2860:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1421,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2872:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1417,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"2876:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2872:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2885:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2872:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2860:26:8"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2895:3:8","subExpression":{"id":1425,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1415,"src":"2897:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1427,"nodeType":"ExpressionStatement","src":"2895:3:8"},"nodeType":"ForStatement","src":"2855:140:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1444,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1388,"src":"3008:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3022:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3008:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1453,"nodeType":"IfStatement","src":"3004:96:8","trueBody":{"id":1452,"nodeType":"Block","src":"3025:75:8","statements":[{"errorCall":{"arguments":[{"id":1448,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"3075:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1449,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"3082:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1447,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"3046:28:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1451,"nodeType":"RevertStatement","src":"3039:50:8"}]}},{"expression":{"arguments":[{"id":1456,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1392,"src":"3123:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3116:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1454,"name":"string","nodeType":"ElementaryTypeName","src":"3116:6:8","typeDescriptions":{}}},"id":1457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:14:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1386,"id":1458,"nodeType":"Return","src":"3109:21:8"}]},"documentation":{"id":1378,"nodeType":"StructuredDocumentation","src":"2495:112:8","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1460,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2621:11:8","nodeType":"FunctionDefinition","parameters":{"id":1383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1380,"mutability":"mutable","name":"value","nameLocation":"2641:5:8","nodeType":"VariableDeclaration","scope":1460,"src":"2633:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1379,"name":"uint256","nodeType":"ElementaryTypeName","src":"2633:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1382,"mutability":"mutable","name":"length","nameLocation":"2656:6:8","nodeType":"VariableDeclaration","scope":1460,"src":"2648:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1381,"name":"uint256","nodeType":"ElementaryTypeName","src":"2648:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2632:31:8"},"returnParameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1460,"src":"2687:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1384,"name":"string","nodeType":"ElementaryTypeName","src":"2687:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2686:15:8"},"scope":2619,"src":"2612:525:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1479,"nodeType":"Block","src":"3369:75:8","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1473,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"3414:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3406:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1471,"name":"uint160","nodeType":"ElementaryTypeName","src":"3406:7:8","typeDescriptions":{}}},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3406:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3398:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"3398:7:8","typeDescriptions":{}}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3398:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1476,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"3422:14:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1468,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1377,1460,1480],"referencedDeclaration":1460,"src":"3386:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1467,"id":1478,"nodeType":"Return","src":"3379:58:8"}]},"documentation":{"id":1461,"nodeType":"StructuredDocumentation","src":"3143:148:8","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":1480,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"3305:11:8","nodeType":"FunctionDefinition","parameters":{"id":1464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1463,"mutability":"mutable","name":"addr","nameLocation":"3325:4:8","nodeType":"VariableDeclaration","scope":1480,"src":"3317:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1462,"name":"address","nodeType":"ElementaryTypeName","src":"3317:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3316:14:8"},"returnParameters":{"id":1467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1480,"src":"3354:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1465,"name":"string","nodeType":"ElementaryTypeName","src":"3354:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3353:15:8"},"scope":2619,"src":"3296:148:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1544,"nodeType":"Block","src":"3701:642:8","statements":[{"assignments":[1489],"declarations":[{"constant":false,"id":1489,"mutability":"mutable","name":"buffer","nameLocation":"3724:6:8","nodeType":"VariableDeclaration","scope":1544,"src":"3711:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1488,"name":"bytes","nodeType":"ElementaryTypeName","src":"3711:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1496,"initialValue":{"arguments":[{"arguments":[{"id":1493,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"3751:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1492,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1377,1460,1480],"referencedDeclaration":1480,"src":"3739:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3739:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3733:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1490,"name":"bytes","nodeType":"ElementaryTypeName","src":"3733:5:8","typeDescriptions":{}}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3733:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3711:46:8"},{"assignments":[1498],"declarations":[{"constant":false,"id":1498,"mutability":"mutable","name":"hashValue","nameLocation":"3850:9:8","nodeType":"VariableDeclaration","scope":1544,"src":"3842:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"3842:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1499,"nodeType":"VariableDeclarationStatement","src":"3842:17:8"},{"AST":{"nativeSrc":"3894:78:8","nodeType":"YulBlock","src":"3894:78:8","statements":[{"nativeSrc":"3908:54:8","nodeType":"YulAssignment","src":"3908:54:8","value":{"arguments":[{"kind":"number","nativeSrc":"3925:2:8","nodeType":"YulLiteral","src":"3925:2:8","type":"","value":"96"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"3943:6:8","nodeType":"YulIdentifier","src":"3943:6:8"},{"kind":"number","nativeSrc":"3951:4:8","nodeType":"YulLiteral","src":"3951:4:8","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"3939:3:8","nodeType":"YulIdentifier","src":"3939:3:8"},"nativeSrc":"3939:17:8","nodeType":"YulFunctionCall","src":"3939:17:8"},{"kind":"number","nativeSrc":"3958:2:8","nodeType":"YulLiteral","src":"3958:2:8","type":"","value":"40"}],"functionName":{"name":"keccak256","nativeSrc":"3929:9:8","nodeType":"YulIdentifier","src":"3929:9:8"},"nativeSrc":"3929:32:8","nodeType":"YulFunctionCall","src":"3929:32:8"}],"functionName":{"name":"shr","nativeSrc":"3921:3:8","nodeType":"YulIdentifier","src":"3921:3:8"},"nativeSrc":"3921:41:8","nodeType":"YulFunctionCall","src":"3921:41:8"},"variableNames":[{"name":"hashValue","nativeSrc":"3908:9:8","nodeType":"YulIdentifier","src":"3908:9:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1489,"isOffset":false,"isSlot":false,"src":"3943:6:8","valueSize":1},{"declaration":1498,"isOffset":false,"isSlot":false,"src":"3908:9:8","valueSize":1}],"flags":["memory-safe"],"id":1500,"nodeType":"InlineAssembly","src":"3869:103:8"},{"body":{"id":1537,"nodeType":"Block","src":"4015:291:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1511,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"4121:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4133:3:8","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4121:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"37","id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4139:1:8","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"4121:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1518,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1489,"src":"4150:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1520,"indexExpression":{"id":1519,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"4157:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4150:9:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4144:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1516,"name":"uint8","nodeType":"ElementaryTypeName","src":"4144:5:8","typeDescriptions":{}}},"id":1521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4144:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":1522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4163:2:8","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"4144:21:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4121:44:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1532,"nodeType":"IfStatement","src":"4117:150:8","trueBody":{"id":1531,"nodeType":"Block","src":"4167:100:8","statements":[{"expression":{"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1525,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1489,"src":"4235:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1527,"indexExpression":{"id":1526,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"4242:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4235:9:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"hexValue":"30783230","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4248:4:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"4235:17:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1530,"nodeType":"ExpressionStatement","src":"4235:17:8"}]}},{"expression":{"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1533,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"4280:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4294:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4280:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1536,"nodeType":"ExpressionStatement","src":"4280:15:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1505,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"4003:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4007:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4003:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1538,"initializationExpression":{"assignments":[1502],"declarations":[{"constant":false,"id":1502,"mutability":"mutable","name":"i","nameLocation":"3995:1:8","nodeType":"VariableDeclaration","scope":1538,"src":"3987:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1501,"name":"uint256","nodeType":"ElementaryTypeName","src":"3987:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1504,"initialValue":{"hexValue":"3431","id":1503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3999:2:8","typeDescriptions":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"value":"41"},"nodeType":"VariableDeclarationStatement","src":"3987:14:8"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"4010:3:8","subExpression":{"id":1508,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"4012:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1510,"nodeType":"ExpressionStatement","src":"4010:3:8"},"nodeType":"ForStatement","src":"3982:324:8"},{"expression":{"arguments":[{"id":1541,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1489,"src":"4329:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4322:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1539,"name":"string","nodeType":"ElementaryTypeName","src":"4322:6:8","typeDescriptions":{}}},"id":1542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:14:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1487,"id":1543,"nodeType":"Return","src":"4315:21:8"}]},"documentation":{"id":1481,"nodeType":"StructuredDocumentation","src":"3450:165:8","text":" @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."},"id":1545,"implemented":true,"kind":"function","modifiers":[],"name":"toChecksumHexString","nameLocation":"3629:19:8","nodeType":"FunctionDefinition","parameters":{"id":1484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1483,"mutability":"mutable","name":"addr","nameLocation":"3657:4:8","nodeType":"VariableDeclaration","scope":1545,"src":"3649:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1482,"name":"address","nodeType":"ElementaryTypeName","src":"3649:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3648:14:8"},"returnParameters":{"id":1487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1545,"src":"3686:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1485,"name":"string","nodeType":"ElementaryTypeName","src":"3686:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3685:15:8"},"scope":2619,"src":"3620:723:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1581,"nodeType":"Block","src":"4498:104:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1557,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1548,"src":"4521:1:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4515:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1555,"name":"bytes","nodeType":"ElementaryTypeName","src":"4515:5:8","typeDescriptions":{}}},"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4515:8:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4524:6:8","memberName":"length","nodeType":"MemberAccess","src":"4515:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1562,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"4540:1:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4534:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1560,"name":"bytes","nodeType":"ElementaryTypeName","src":"4534:5:8","typeDescriptions":{}}},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4534:8:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4543:6:8","memberName":"length","nodeType":"MemberAccess","src":"4534:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4515:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1569,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1548,"src":"4569:1:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1567,"name":"bytes","nodeType":"ElementaryTypeName","src":"4563:5:8","typeDescriptions":{}}},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:8:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1566,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4553:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4553:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1575,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"4592:1:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4586:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1573,"name":"bytes","nodeType":"ElementaryTypeName","src":"4586:5:8","typeDescriptions":{}}},"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4586:8:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1572,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4576:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4576:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4553:42:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4515:80:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1554,"id":1580,"nodeType":"Return","src":"4508:87:8"}]},"documentation":{"id":1546,"nodeType":"StructuredDocumentation","src":"4349:66:8","text":" @dev Returns true if the two strings are equal."},"id":1582,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"4429:5:8","nodeType":"FunctionDefinition","parameters":{"id":1551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"a","nameLocation":"4449:1:8","nodeType":"VariableDeclaration","scope":1582,"src":"4435:15:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1547,"name":"string","nodeType":"ElementaryTypeName","src":"4435:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1550,"mutability":"mutable","name":"b","nameLocation":"4466:1:8","nodeType":"VariableDeclaration","scope":1582,"src":"4452:15:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1549,"name":"string","nodeType":"ElementaryTypeName","src":"4452:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4434:34:8"},"returnParameters":{"id":1554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1582,"src":"4492:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1552,"name":"bool","nodeType":"ElementaryTypeName","src":"4492:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4491:6:8"},"scope":2619,"src":"4420:182:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1600,"nodeType":"Block","src":"4899:64:8","statements":[{"expression":{"arguments":[{"id":1591,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"4926:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4933:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1595,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"4942:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4936:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1593,"name":"bytes","nodeType":"ElementaryTypeName","src":"4936:5:8","typeDescriptions":{}}},"id":1596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4936:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4949:6:8","memberName":"length","nodeType":"MemberAccess","src":"4936:19:8","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":1590,"name":"parseUint","nodeType":"Identifier","overloadedDeclarations":[1601,1632],"referencedDeclaration":1632,"src":"4916:9:8","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":1598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4916:40:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1589,"id":1599,"nodeType":"Return","src":"4909:47:8"}]},"documentation":{"id":1583,"nodeType":"StructuredDocumentation","src":"4608:214:8","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":1601,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"4836:9:8","nodeType":"FunctionDefinition","parameters":{"id":1586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1585,"mutability":"mutable","name":"input","nameLocation":"4860:5:8","nodeType":"VariableDeclaration","scope":1601,"src":"4846:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1584,"name":"string","nodeType":"ElementaryTypeName","src":"4846:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4845:21:8"},"returnParameters":{"id":1589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1601,"src":"4890:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1587,"name":"uint256","nodeType":"ElementaryTypeName","src":"4890:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4889:9:8"},"scope":2619,"src":"4827:136:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1631,"nodeType":"Block","src":"5368:153:8","statements":[{"assignments":[1614,1616],"declarations":[{"constant":false,"id":1614,"mutability":"mutable","name":"success","nameLocation":"5384:7:8","nodeType":"VariableDeclaration","scope":1631,"src":"5379:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1613,"name":"bool","nodeType":"ElementaryTypeName","src":"5379:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1616,"mutability":"mutable","name":"value","nameLocation":"5401:5:8","nodeType":"VariableDeclaration","scope":1631,"src":"5393:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1615,"name":"uint256","nodeType":"ElementaryTypeName","src":"5393:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1622,"initialValue":{"arguments":[{"id":1618,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"5423:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1619,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1606,"src":"5430:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1620,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"5437:3:8","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":1617,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[1653,1690],"referencedDeclaration":1690,"src":"5410:12:8","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":1621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5410:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5378:63:8"},{"condition":{"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5455:8:8","subExpression":{"id":1623,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"5456:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1628,"nodeType":"IfStatement","src":"5451:41:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1625,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"5472:18:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5472:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1627,"nodeType":"RevertStatement","src":"5465:27:8"}},{"expression":{"id":1629,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"5509:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1612,"id":1630,"nodeType":"Return","src":"5502:12:8"}]},"documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"4969:294:8","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":1632,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5277:9:8","nodeType":"FunctionDefinition","parameters":{"id":1609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1604,"mutability":"mutable","name":"input","nameLocation":"5301:5:8","nodeType":"VariableDeclaration","scope":1632,"src":"5287:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1603,"name":"string","nodeType":"ElementaryTypeName","src":"5287:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1606,"mutability":"mutable","name":"begin","nameLocation":"5316:5:8","nodeType":"VariableDeclaration","scope":1632,"src":"5308:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1605,"name":"uint256","nodeType":"ElementaryTypeName","src":"5308:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1608,"mutability":"mutable","name":"end","nameLocation":"5331:3:8","nodeType":"VariableDeclaration","scope":1632,"src":"5323:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1607,"name":"uint256","nodeType":"ElementaryTypeName","src":"5323:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5286:49:8"},"returnParameters":{"id":1612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1632,"src":"5359:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1610,"name":"uint256","nodeType":"ElementaryTypeName","src":"5359:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5358:9:8"},"scope":2619,"src":"5268:253:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1652,"nodeType":"Block","src":"5842:83:8","statements":[{"expression":{"arguments":[{"id":1643,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"5888:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5895:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1647,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"5904:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1645,"name":"bytes","nodeType":"ElementaryTypeName","src":"5898:5:8","typeDescriptions":{}}},"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5911:6:8","memberName":"length","nodeType":"MemberAccess","src":"5898:19:8","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":1642,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"5859:28:8","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":1650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5859:59:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1641,"id":1651,"nodeType":"Return","src":"5852:66:8"}]},"documentation":{"id":1633,"nodeType":"StructuredDocumentation","src":"5527:215:8","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":1653,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"5756:12:8","nodeType":"FunctionDefinition","parameters":{"id":1636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1635,"mutability":"mutable","name":"input","nameLocation":"5783:5:8","nodeType":"VariableDeclaration","scope":1653,"src":"5769:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1634,"name":"string","nodeType":"ElementaryTypeName","src":"5769:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5768:21:8"},"returnParameters":{"id":1641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1638,"mutability":"mutable","name":"success","nameLocation":"5818:7:8","nodeType":"VariableDeclaration","scope":1653,"src":"5813:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1637,"name":"bool","nodeType":"ElementaryTypeName","src":"5813:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1640,"mutability":"mutable","name":"value","nameLocation":"5835:5:8","nodeType":"VariableDeclaration","scope":1653,"src":"5827:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1639,"name":"uint256","nodeType":"ElementaryTypeName","src":"5827:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5812:29:8"},"scope":2619,"src":"5747:178:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1689,"nodeType":"Block","src":"6327:144:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1667,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1660,"src":"6341:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":1670,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"6353:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6347:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1668,"name":"bytes","nodeType":"ElementaryTypeName","src":"6347:5:8","typeDescriptions":{}}},"id":1671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6347:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6360:6:8","memberName":"length","nodeType":"MemberAccess","src":"6347:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6341:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1674,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"6370:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1675,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1660,"src":"6378:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6370:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6341:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1682,"nodeType":"IfStatement","src":"6337:63:8","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6391:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6398:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1680,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6390:10:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1666,"id":1681,"nodeType":"Return","src":"6383:17:8"}},{"expression":{"arguments":[{"id":1684,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"6446:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1685,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"6453:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1686,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1660,"src":"6460:3:8","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":1683,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"6417:28:8","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":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6417:47:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1666,"id":1688,"nodeType":"Return","src":"6410:54:8"}]},"documentation":{"id":1654,"nodeType":"StructuredDocumentation","src":"5931:238:8","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":1690,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6183:12:8","nodeType":"FunctionDefinition","parameters":{"id":1661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"input","nameLocation":"6219:5:8","nodeType":"VariableDeclaration","scope":1690,"src":"6205:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1655,"name":"string","nodeType":"ElementaryTypeName","src":"6205:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1658,"mutability":"mutable","name":"begin","nameLocation":"6242:5:8","nodeType":"VariableDeclaration","scope":1690,"src":"6234:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"6234:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1660,"mutability":"mutable","name":"end","nameLocation":"6265:3:8","nodeType":"VariableDeclaration","scope":1690,"src":"6257:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1659,"name":"uint256","nodeType":"ElementaryTypeName","src":"6257:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6195:79:8"},"returnParameters":{"id":1666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"success","nameLocation":"6303:7:8","nodeType":"VariableDeclaration","scope":1690,"src":"6298:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1662,"name":"bool","nodeType":"ElementaryTypeName","src":"6298:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1665,"mutability":"mutable","name":"value","nameLocation":"6320:5:8","nodeType":"VariableDeclaration","scope":1690,"src":"6312:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1664,"name":"uint256","nodeType":"ElementaryTypeName","src":"6312:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6297:29:8"},"scope":2619,"src":"6174:297:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1759,"nodeType":"Block","src":"6874:347:8","statements":[{"assignments":[1705],"declarations":[{"constant":false,"id":1705,"mutability":"mutable","name":"buffer","nameLocation":"6897:6:8","nodeType":"VariableDeclaration","scope":1759,"src":"6884:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1704,"name":"bytes","nodeType":"ElementaryTypeName","src":"6884:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1710,"initialValue":{"arguments":[{"id":1708,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1693,"src":"6912:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6906:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1706,"name":"bytes","nodeType":"ElementaryTypeName","src":"6906:5:8","typeDescriptions":{}}},"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6906:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6884:34:8"},{"assignments":[1712],"declarations":[{"constant":false,"id":1712,"mutability":"mutable","name":"result","nameLocation":"6937:6:8","nodeType":"VariableDeclaration","scope":1759,"src":"6929:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1711,"name":"uint256","nodeType":"ElementaryTypeName","src":"6929:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1714,"initialValue":{"hexValue":"30","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6946:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6929:18:8"},{"body":{"id":1753,"nodeType":"Block","src":"6995:189:8","statements":[{"assignments":[1726],"declarations":[{"constant":false,"id":1726,"mutability":"mutable","name":"chr","nameLocation":"7015:3:8","nodeType":"VariableDeclaration","scope":1753,"src":"7009:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1725,"name":"uint8","nodeType":"ElementaryTypeName","src":"7009:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1736,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":1731,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"7064:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"7072:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1730,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"7041:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7041:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7034:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1728,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7034:6:8","typeDescriptions":{}}},"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7034:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1727,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2440,"src":"7021:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7021:55:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7009:67:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1737,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"7094:3:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"39","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7100:1:8","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"7094:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1744,"nodeType":"IfStatement","src":"7090:30:8","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7111:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7118:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1742,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7110:10:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1703,"id":1743,"nodeType":"Return","src":"7103:17:8"}},{"expression":{"id":1747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1745,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"7134:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3130","id":1746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7144:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7134:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1748,"nodeType":"ExpressionStatement","src":"7134:12:8"},{"expression":{"id":1751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1749,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"7160:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1750,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"7170:3:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7160:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1752,"nodeType":"ExpressionStatement","src":"7160:13:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1719,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"6981:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1720,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1697,"src":"6985:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6981:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1754,"initializationExpression":{"assignments":[1716],"declarations":[{"constant":false,"id":1716,"mutability":"mutable","name":"i","nameLocation":"6970:1:8","nodeType":"VariableDeclaration","scope":1754,"src":"6962:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1715,"name":"uint256","nodeType":"ElementaryTypeName","src":"6962:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1718,"initialValue":{"id":1717,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1695,"src":"6974:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6962:17:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6990:3:8","subExpression":{"id":1722,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"6992:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1724,"nodeType":"ExpressionStatement","src":"6990:3:8"},"nodeType":"ForStatement","src":"6957:227:8"},{"expression":{"components":[{"hexValue":"74727565","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7201:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1756,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"7207:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7200:14:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1703,"id":1758,"nodeType":"Return","src":"7193:21:8"}]},"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"6477:224:8","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":1760,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseUintUncheckedBounds","nameLocation":"6715:28:8","nodeType":"FunctionDefinition","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"input","nameLocation":"6767:5:8","nodeType":"VariableDeclaration","scope":1760,"src":"6753:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1692,"name":"string","nodeType":"ElementaryTypeName","src":"6753:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"begin","nameLocation":"6790:5:8","nodeType":"VariableDeclaration","scope":1760,"src":"6782:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1694,"name":"uint256","nodeType":"ElementaryTypeName","src":"6782:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"end","nameLocation":"6813:3:8","nodeType":"VariableDeclaration","scope":1760,"src":"6805:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"6805:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6743:79:8"},"returnParameters":{"id":1703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1700,"mutability":"mutable","name":"success","nameLocation":"6850:7:8","nodeType":"VariableDeclaration","scope":1760,"src":"6845:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1699,"name":"bool","nodeType":"ElementaryTypeName","src":"6845:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1702,"mutability":"mutable","name":"value","nameLocation":"6867:5:8","nodeType":"VariableDeclaration","scope":1760,"src":"6859:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1701,"name":"uint256","nodeType":"ElementaryTypeName","src":"6859:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6844:29:8"},"scope":2619,"src":"6706:515:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1778,"nodeType":"Block","src":"7518:63:8","statements":[{"expression":{"arguments":[{"id":1769,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1763,"src":"7544:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7551:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1773,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1763,"src":"7560:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7554:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1771,"name":"bytes","nodeType":"ElementaryTypeName","src":"7554:5:8","typeDescriptions":{}}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7554:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7567:6:8","memberName":"length","nodeType":"MemberAccess","src":"7554:19:8","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":1768,"name":"parseInt","nodeType":"Identifier","overloadedDeclarations":[1779,1810],"referencedDeclaration":1810,"src":"7535:8:8","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":1776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7535:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1767,"id":1777,"nodeType":"Return","src":"7528:46:8"}]},"documentation":{"id":1761,"nodeType":"StructuredDocumentation","src":"7227:216:8","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":1779,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7457:8:8","nodeType":"FunctionDefinition","parameters":{"id":1764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1763,"mutability":"mutable","name":"input","nameLocation":"7480:5:8","nodeType":"VariableDeclaration","scope":1779,"src":"7466:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1762,"name":"string","nodeType":"ElementaryTypeName","src":"7466:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7465:21:8"},"returnParameters":{"id":1767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1779,"src":"7510:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1765,"name":"int256","nodeType":"ElementaryTypeName","src":"7510:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7509:8:8"},"scope":2619,"src":"7448:133:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1809,"nodeType":"Block","src":"7986:151:8","statements":[{"assignments":[1792,1794],"declarations":[{"constant":false,"id":1792,"mutability":"mutable","name":"success","nameLocation":"8002:7:8","nodeType":"VariableDeclaration","scope":1809,"src":"7997:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1791,"name":"bool","nodeType":"ElementaryTypeName","src":"7997:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1794,"mutability":"mutable","name":"value","nameLocation":"8018:5:8","nodeType":"VariableDeclaration","scope":1809,"src":"8011:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1793,"name":"int256","nodeType":"ElementaryTypeName","src":"8011:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1800,"initialValue":{"arguments":[{"id":1796,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"8039:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1797,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"8046:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1798,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1786,"src":"8053:3:8","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":1795,"name":"tryParseInt","nodeType":"Identifier","overloadedDeclarations":[1831,1873],"referencedDeclaration":1873,"src":"8027:11:8","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":1799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8027:30:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"nodeType":"VariableDeclarationStatement","src":"7996:61:8"},{"condition":{"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8071:8:8","subExpression":{"id":1801,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"8072:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1806,"nodeType":"IfStatement","src":"8067:41:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1803,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"8088:18:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8088:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1805,"nodeType":"RevertStatement","src":"8081:27:8"}},{"expression":{"id":1807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1794,"src":"8125:5:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1790,"id":1808,"nodeType":"Return","src":"8118:12:8"}]},"documentation":{"id":1780,"nodeType":"StructuredDocumentation","src":"7587:296:8","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":1810,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7897:8:8","nodeType":"FunctionDefinition","parameters":{"id":1787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1782,"mutability":"mutable","name":"input","nameLocation":"7920:5:8","nodeType":"VariableDeclaration","scope":1810,"src":"7906:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1781,"name":"string","nodeType":"ElementaryTypeName","src":"7906:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1784,"mutability":"mutable","name":"begin","nameLocation":"7935:5:8","nodeType":"VariableDeclaration","scope":1810,"src":"7927:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1783,"name":"uint256","nodeType":"ElementaryTypeName","src":"7927:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1786,"mutability":"mutable","name":"end","nameLocation":"7950:3:8","nodeType":"VariableDeclaration","scope":1810,"src":"7942:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"7942:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7905:49:8"},"returnParameters":{"id":1790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1810,"src":"7978:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1788,"name":"int256","nodeType":"ElementaryTypeName","src":"7978:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7977:8:8"},"scope":2619,"src":"7888:249:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1830,"nodeType":"Block","src":"8528:82:8","statements":[{"expression":{"arguments":[{"id":1821,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"8573:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8580:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1825,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"8589:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8583:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1823,"name":"bytes","nodeType":"ElementaryTypeName","src":"8583:5:8","typeDescriptions":{}}},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8583:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8596:6:8","memberName":"length","nodeType":"MemberAccess","src":"8583:19:8","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":1820,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"8545:27:8","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":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8545:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":1819,"id":1829,"nodeType":"Return","src":"8538:65:8"}]},"documentation":{"id":1811,"nodeType":"StructuredDocumentation","src":"8143:287:8","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":1831,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8444:11:8","nodeType":"FunctionDefinition","parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1813,"mutability":"mutable","name":"input","nameLocation":"8470:5:8","nodeType":"VariableDeclaration","scope":1831,"src":"8456:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1812,"name":"string","nodeType":"ElementaryTypeName","src":"8456:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8455:21:8"},"returnParameters":{"id":1819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"mutability":"mutable","name":"success","nameLocation":"8505:7:8","nodeType":"VariableDeclaration","scope":1831,"src":"8500:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1815,"name":"bool","nodeType":"ElementaryTypeName","src":"8500:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1818,"mutability":"mutable","name":"value","nameLocation":"8521:5:8","nodeType":"VariableDeclaration","scope":1831,"src":"8514:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1817,"name":"int256","nodeType":"ElementaryTypeName","src":"8514:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8499:28:8"},"scope":2619,"src":"8435:175:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":1836,"mutability":"constant","name":"ABS_MIN_INT256","nameLocation":"8641:14:8","nodeType":"VariableDeclaration","scope":2619,"src":"8616:50:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1832,"name":"uint256","nodeType":"ElementaryTypeName","src":"8616:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8658:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:3:8","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"8658:8:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":1872,"nodeType":"Block","src":"9132:143:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1850,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"9146:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":1853,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"9158:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9152:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1851,"name":"bytes","nodeType":"ElementaryTypeName","src":"9152:5:8","typeDescriptions":{}}},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9152:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9165:6:8","memberName":"length","nodeType":"MemberAccess","src":"9152:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9146:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1857,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1841,"src":"9175:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1858,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"9183:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9175:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9146:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1865,"nodeType":"IfStatement","src":"9142:63:8","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9196:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9203:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1863,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9195:10:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1849,"id":1864,"nodeType":"Return","src":"9188:17:8"}},{"expression":{"arguments":[{"id":1867,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"9250:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1868,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1841,"src":"9257:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1869,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1843,"src":"9264:3:8","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":1866,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"9222:27:8","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":1870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9222:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":1849,"id":1871,"nodeType":"Return","src":"9215:53:8"}]},"documentation":{"id":1837,"nodeType":"StructuredDocumentation","src":"8673:303:8","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":1873,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8990:11:8","nodeType":"FunctionDefinition","parameters":{"id":1844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1839,"mutability":"mutable","name":"input","nameLocation":"9025:5:8","nodeType":"VariableDeclaration","scope":1873,"src":"9011:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1838,"name":"string","nodeType":"ElementaryTypeName","src":"9011:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1841,"mutability":"mutable","name":"begin","nameLocation":"9048:5:8","nodeType":"VariableDeclaration","scope":1873,"src":"9040:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1840,"name":"uint256","nodeType":"ElementaryTypeName","src":"9040:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1843,"mutability":"mutable","name":"end","nameLocation":"9071:3:8","nodeType":"VariableDeclaration","scope":1873,"src":"9063:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1842,"name":"uint256","nodeType":"ElementaryTypeName","src":"9063:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9001:79:8"},"returnParameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1846,"mutability":"mutable","name":"success","nameLocation":"9109:7:8","nodeType":"VariableDeclaration","scope":1873,"src":"9104:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1845,"name":"bool","nodeType":"ElementaryTypeName","src":"9104:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1848,"mutability":"mutable","name":"value","nameLocation":"9125:5:8","nodeType":"VariableDeclaration","scope":1873,"src":"9118:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1847,"name":"int256","nodeType":"ElementaryTypeName","src":"9118:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9103:28:8"},"scope":2619,"src":"8981:294:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1993,"nodeType":"Block","src":"9675:812:8","statements":[{"assignments":[1888],"declarations":[{"constant":false,"id":1888,"mutability":"mutable","name":"buffer","nameLocation":"9698:6:8","nodeType":"VariableDeclaration","scope":1993,"src":"9685:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1887,"name":"bytes","nodeType":"ElementaryTypeName","src":"9685:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1893,"initialValue":{"arguments":[{"id":1891,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"9713:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9707:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1889,"name":"bytes","nodeType":"ElementaryTypeName","src":"9707:5:8","typeDescriptions":{}}},"id":1892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9707:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"9685:34:8"},{"assignments":[1895],"declarations":[{"constant":false,"id":1895,"mutability":"mutable","name":"sign","nameLocation":"9783:4:8","nodeType":"VariableDeclaration","scope":1993,"src":"9776:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1894,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9776:6:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":1911,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1896,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1878,"src":"9790:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1897,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"9799:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9790:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":1906,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1888,"src":"9847:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1907,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1878,"src":"9855:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1905,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"9824:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9824:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9817:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1903,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9817:6:8","typeDescriptions":{}}},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9817:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9790:72:8","trueExpression":{"arguments":[{"hexValue":"30","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9812:1:8","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":1900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9805:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1899,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9805:6:8","typeDescriptions":{}}},"id":1902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9805:9:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"9776:86:8"},{"assignments":[1913],"declarations":[{"constant":false,"id":1913,"mutability":"mutable","name":"positiveSign","nameLocation":"9948:12:8","nodeType":"VariableDeclaration","scope":1993,"src":"9943:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1912,"name":"bool","nodeType":"ElementaryTypeName","src":"9943:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1920,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1914,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1895,"src":"9963:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2b","id":1917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9978:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""},"value":"+"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""}],"id":1916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9971:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1915,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9971:6:8","typeDescriptions":{}}},"id":1918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9971:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"9963:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9943:39:8"},{"assignments":[1922],"declarations":[{"constant":false,"id":1922,"mutability":"mutable","name":"negativeSign","nameLocation":"9997:12:8","nodeType":"VariableDeclaration","scope":1993,"src":"9992:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1921,"name":"bool","nodeType":"ElementaryTypeName","src":"9992:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1929,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1923,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1895,"src":"10012:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2d","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10027:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""}],"id":1925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10020:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1924,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10020:6:8","typeDescriptions":{}}},"id":1927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10020:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10012:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9992:39:8"},{"assignments":[1931],"declarations":[{"constant":false,"id":1931,"mutability":"mutable","name":"offset","nameLocation":"10049:6:8","nodeType":"VariableDeclaration","scope":1993,"src":"10041:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"10041:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1938,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1932,"name":"positiveSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"10059:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1933,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"10075:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10059:28:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1935,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10058:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10089:6:8","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"10058:37:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10058:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10041:56:8"},{"assignments":[1940,1942],"declarations":[{"constant":false,"id":1940,"mutability":"mutable","name":"absSuccess","nameLocation":"10114:10:8","nodeType":"VariableDeclaration","scope":1993,"src":"10109:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1939,"name":"bool","nodeType":"ElementaryTypeName","src":"10109:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1942,"mutability":"mutable","name":"absValue","nameLocation":"10134:8:8","nodeType":"VariableDeclaration","scope":1993,"src":"10126:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1941,"name":"uint256","nodeType":"ElementaryTypeName","src":"10126:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1950,"initialValue":{"arguments":[{"id":1944,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"10159:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1945,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1878,"src":"10166:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1946,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"10174:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10166:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1948,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"10182:3:8","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":1943,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[1653,1690],"referencedDeclaration":1690,"src":"10146:12:8","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":1949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10146:40:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10108:78:8"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1951,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"10201:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1952,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"10215:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1953,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"10226:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10215:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10201:39:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1971,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"10343:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1972,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"10357:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10343:26:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1974,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"10373:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1975,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"10385:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10373:26:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10343:56:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10471:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10478:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10470:10:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1886,"id":1990,"nodeType":"Return","src":"10463:17:8"},"id":1991,"nodeType":"IfStatement","src":"10339:141:8","trueBody":{"id":1986,"nodeType":"Block","src":"10401:56:8","statements":[{"expression":{"components":[{"hexValue":"74727565","id":1978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10423:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"arguments":[{"id":1981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10434:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1980,"name":"int256","nodeType":"ElementaryTypeName","src":"10434:6:8","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":1979,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10429:4:8","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10429:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":1983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10442:3:8","memberName":"min","nodeType":"MemberAccess","src":"10429:16:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1984,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10422:24:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":1886,"id":1985,"nodeType":"Return","src":"10415:31:8"}]}},"id":1992,"nodeType":"IfStatement","src":"10197:283:8","trueBody":{"id":1970,"nodeType":"Block","src":"10242:91:8","statements":[{"expression":{"components":[{"hexValue":"74727565","id":1956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10264:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"condition":{"id":1957,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"10270:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":1965,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"10312:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10305:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1963,"name":"int256","nodeType":"ElementaryTypeName","src":"10305:6:8","typeDescriptions":{}}},"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10305:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10270:51:8","trueExpression":{"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10285:17:8","subExpression":{"arguments":[{"id":1960,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"10293:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10286:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1958,"name":"int256","nodeType":"ElementaryTypeName","src":"10286:6:8","typeDescriptions":{}}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10286:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1968,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10263:59:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":1886,"id":1969,"nodeType":"Return","src":"10256:66:8"}]}}]},"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"9281:223:8","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":1994,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseIntUncheckedBounds","nameLocation":"9518:27:8","nodeType":"FunctionDefinition","parameters":{"id":1881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"input","nameLocation":"9569:5:8","nodeType":"VariableDeclaration","scope":1994,"src":"9555:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1875,"name":"string","nodeType":"ElementaryTypeName","src":"9555:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1878,"mutability":"mutable","name":"begin","nameLocation":"9592:5:8","nodeType":"VariableDeclaration","scope":1994,"src":"9584:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1877,"name":"uint256","nodeType":"ElementaryTypeName","src":"9584:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1880,"mutability":"mutable","name":"end","nameLocation":"9615:3:8","nodeType":"VariableDeclaration","scope":1994,"src":"9607:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1879,"name":"uint256","nodeType":"ElementaryTypeName","src":"9607:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9545:79:8"},"returnParameters":{"id":1886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1883,"mutability":"mutable","name":"success","nameLocation":"9652:7:8","nodeType":"VariableDeclaration","scope":1994,"src":"9647:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1882,"name":"bool","nodeType":"ElementaryTypeName","src":"9647:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1885,"mutability":"mutable","name":"value","nameLocation":"9668:5:8","nodeType":"VariableDeclaration","scope":1994,"src":"9661:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1884,"name":"int256","nodeType":"ElementaryTypeName","src":"9661:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9646:28:8"},"scope":2619,"src":"9509:978:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2012,"nodeType":"Block","src":"10832:67:8","statements":[{"expression":{"arguments":[{"id":2003,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1997,"src":"10862:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10869:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2007,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1997,"src":"10878:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10872:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2005,"name":"bytes","nodeType":"ElementaryTypeName","src":"10872:5:8","typeDescriptions":{}}},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10872:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10885:6:8","memberName":"length","nodeType":"MemberAccess","src":"10872:19:8","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":2002,"name":"parseHexUint","nodeType":"Identifier","overloadedDeclarations":[2013,2044],"referencedDeclaration":2044,"src":"10849:12:8","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":2010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10849:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2001,"id":2011,"nodeType":"Return","src":"10842:50:8"}]},"documentation":{"id":1995,"nodeType":"StructuredDocumentation","src":"10493:259:8","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":2013,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"10766:12:8","nodeType":"FunctionDefinition","parameters":{"id":1998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1997,"mutability":"mutable","name":"input","nameLocation":"10793:5:8","nodeType":"VariableDeclaration","scope":2013,"src":"10779:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1996,"name":"string","nodeType":"ElementaryTypeName","src":"10779:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10778:21:8"},"returnParameters":{"id":2001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2013,"src":"10823:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1999,"name":"uint256","nodeType":"ElementaryTypeName","src":"10823:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10822:9:8"},"scope":2619,"src":"10757:142:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2043,"nodeType":"Block","src":"11320:156:8","statements":[{"assignments":[2026,2028],"declarations":[{"constant":false,"id":2026,"mutability":"mutable","name":"success","nameLocation":"11336:7:8","nodeType":"VariableDeclaration","scope":2043,"src":"11331:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2025,"name":"bool","nodeType":"ElementaryTypeName","src":"11331:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2028,"mutability":"mutable","name":"value","nameLocation":"11353:5:8","nodeType":"VariableDeclaration","scope":2043,"src":"11345:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2027,"name":"uint256","nodeType":"ElementaryTypeName","src":"11345:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2034,"initialValue":{"arguments":[{"id":2030,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"11378:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2031,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"11385:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2032,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"11392:3:8","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":2029,"name":"tryParseHexUint","nodeType":"Identifier","overloadedDeclarations":[2065,2102],"referencedDeclaration":2102,"src":"11362:15:8","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":2033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11362:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11330:66:8"},{"condition":{"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11410:8:8","subExpression":{"id":2035,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"11411:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2040,"nodeType":"IfStatement","src":"11406:41:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2037,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"11427:18:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11427:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2039,"nodeType":"RevertStatement","src":"11420:27:8"}},{"expression":{"id":2041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"11464:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2024,"id":2042,"nodeType":"Return","src":"11457:12:8"}]},"documentation":{"id":2014,"nodeType":"StructuredDocumentation","src":"10905:307:8","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":2044,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11226:12:8","nodeType":"FunctionDefinition","parameters":{"id":2021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2016,"mutability":"mutable","name":"input","nameLocation":"11253:5:8","nodeType":"VariableDeclaration","scope":2044,"src":"11239:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2015,"name":"string","nodeType":"ElementaryTypeName","src":"11239:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2018,"mutability":"mutable","name":"begin","nameLocation":"11268:5:8","nodeType":"VariableDeclaration","scope":2044,"src":"11260:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"11260:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"end","nameLocation":"11283:3:8","nodeType":"VariableDeclaration","scope":2044,"src":"11275:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2019,"name":"uint256","nodeType":"ElementaryTypeName","src":"11275:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11238:49:8"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2044,"src":"11311:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2022,"name":"uint256","nodeType":"ElementaryTypeName","src":"11311:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11310:9:8"},"scope":2619,"src":"11217:259:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2064,"nodeType":"Block","src":"11803:86:8","statements":[{"expression":{"arguments":[{"id":2055,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2047,"src":"11852:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11859:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2059,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2047,"src":"11868:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11862:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2057,"name":"bytes","nodeType":"ElementaryTypeName","src":"11862:5:8","typeDescriptions":{}}},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11862:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11875:6:8","memberName":"length","nodeType":"MemberAccess","src":"11862:19:8","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":2054,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"11820:31:8","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":2062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11820:62:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2053,"id":2063,"nodeType":"Return","src":"11813:69:8"}]},"documentation":{"id":2045,"nodeType":"StructuredDocumentation","src":"11482:218:8","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":2065,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"11714:15:8","nodeType":"FunctionDefinition","parameters":{"id":2048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2047,"mutability":"mutable","name":"input","nameLocation":"11744:5:8","nodeType":"VariableDeclaration","scope":2065,"src":"11730:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2046,"name":"string","nodeType":"ElementaryTypeName","src":"11730:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11729:21:8"},"returnParameters":{"id":2053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"success","nameLocation":"11779:7:8","nodeType":"VariableDeclaration","scope":2065,"src":"11774:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2049,"name":"bool","nodeType":"ElementaryTypeName","src":"11774:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2052,"mutability":"mutable","name":"value","nameLocation":"11796:5:8","nodeType":"VariableDeclaration","scope":2065,"src":"11788:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2051,"name":"uint256","nodeType":"ElementaryTypeName","src":"11788:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11773:29:8"},"scope":2619,"src":"11705:184:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2101,"nodeType":"Block","src":"12297:147:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2079,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2072,"src":"12311:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":2082,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"12323:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12317:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2080,"name":"bytes","nodeType":"ElementaryTypeName","src":"12317:5:8","typeDescriptions":{}}},"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12317:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12330:6:8","memberName":"length","nodeType":"MemberAccess","src":"12317:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12311:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"12340:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2087,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2072,"src":"12348:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12340:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12311:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2094,"nodeType":"IfStatement","src":"12307:63:8","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12361:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12368:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2092,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12360:10:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2078,"id":2093,"nodeType":"Return","src":"12353:17:8"}},{"expression":{"arguments":[{"id":2096,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"12419:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2097,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"12426:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2098,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2072,"src":"12433:3:8","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":2095,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"12387:31:8","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":2099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12387:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2078,"id":2100,"nodeType":"Return","src":"12380:57:8"}]},"documentation":{"id":2066,"nodeType":"StructuredDocumentation","src":"11895:241:8","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":2102,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12150:15:8","nodeType":"FunctionDefinition","parameters":{"id":2073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2068,"mutability":"mutable","name":"input","nameLocation":"12189:5:8","nodeType":"VariableDeclaration","scope":2102,"src":"12175:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2067,"name":"string","nodeType":"ElementaryTypeName","src":"12175:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2070,"mutability":"mutable","name":"begin","nameLocation":"12212:5:8","nodeType":"VariableDeclaration","scope":2102,"src":"12204:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2069,"name":"uint256","nodeType":"ElementaryTypeName","src":"12204:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2072,"mutability":"mutable","name":"end","nameLocation":"12235:3:8","nodeType":"VariableDeclaration","scope":2102,"src":"12227:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2071,"name":"uint256","nodeType":"ElementaryTypeName","src":"12227:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12165:79:8"},"returnParameters":{"id":2078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2075,"mutability":"mutable","name":"success","nameLocation":"12273:7:8","nodeType":"VariableDeclaration","scope":2102,"src":"12268:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2074,"name":"bool","nodeType":"ElementaryTypeName","src":"12268:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2077,"mutability":"mutable","name":"value","nameLocation":"12290:5:8","nodeType":"VariableDeclaration","scope":2102,"src":"12282:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2076,"name":"uint256","nodeType":"ElementaryTypeName","src":"12282:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12267:29:8"},"scope":2619,"src":"12141:303:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2204,"nodeType":"Block","src":"12853:881:8","statements":[{"assignments":[2117],"declarations":[{"constant":false,"id":2117,"mutability":"mutable","name":"buffer","nameLocation":"12876:6:8","nodeType":"VariableDeclaration","scope":2204,"src":"12863:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2116,"name":"bytes","nodeType":"ElementaryTypeName","src":"12863:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2122,"initialValue":{"arguments":[{"id":2120,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2105,"src":"12891:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12885:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2118,"name":"bytes","nodeType":"ElementaryTypeName","src":"12885:5:8","typeDescriptions":{}}},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12885:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"12863:34:8"},{"assignments":[2124],"declarations":[{"constant":false,"id":2124,"mutability":"mutable","name":"hasPrefix","nameLocation":"12950:9:8","nodeType":"VariableDeclaration","scope":2204,"src":"12945:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2123,"name":"bool","nodeType":"ElementaryTypeName","src":"12945:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2144,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2125,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2109,"src":"12963:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2126,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"12969:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12977:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12969:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12963:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12962:17:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2134,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"13013:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2135,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"13021:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2133,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"12990:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12990:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12983:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2131,"name":"bytes2","nodeType":"ElementaryTypeName","src":"12983:6:8","typeDescriptions":{}}},"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12983:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13039:4:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":2139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13032:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2138,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13032:6:8","typeDescriptions":{}}},"id":2141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13032:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"12983:61:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12962:82:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12945:99:8"},{"assignments":[2146],"declarations":[{"constant":false,"id":2146,"mutability":"mutable","name":"offset","nameLocation":"13133:6:8","nodeType":"VariableDeclaration","scope":2204,"src":"13125:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2145,"name":"uint256","nodeType":"ElementaryTypeName","src":"13125:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2152,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2147,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2124,"src":"13142:9:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13152:6:8","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"13142:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":2149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13142:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":2150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13163:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13142:22:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13125:39:8"},{"assignments":[2154],"declarations":[{"constant":false,"id":2154,"mutability":"mutable","name":"result","nameLocation":"13183:6:8","nodeType":"VariableDeclaration","scope":2204,"src":"13175:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2153,"name":"uint256","nodeType":"ElementaryTypeName","src":"13175:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2156,"initialValue":{"hexValue":"30","id":2155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13192:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13175:18:8"},{"body":{"id":2198,"nodeType":"Block","src":"13250:447:8","statements":[{"assignments":[2170],"declarations":[{"constant":false,"id":2170,"mutability":"mutable","name":"chr","nameLocation":"13270:3:8","nodeType":"VariableDeclaration","scope":2198,"src":"13264:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2169,"name":"uint8","nodeType":"ElementaryTypeName","src":"13264:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2180,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":2175,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"13319:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2176,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"13327:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2174,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"13296:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13296:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13289:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2172,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13289:6:8","typeDescriptions":{}}},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13289:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":2171,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2440,"src":"13276:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13276:55:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13264:67:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2181,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"13349:3:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3135","id":2182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13355:2:8","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"13349:8:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2188,"nodeType":"IfStatement","src":"13345:31:8","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13367:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13374:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13366:10:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2115,"id":2187,"nodeType":"Return","src":"13359:17:8"}},{"expression":{"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2189,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2154,"src":"13390:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3136","id":2190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13400:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13390:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2192,"nodeType":"ExpressionStatement","src":"13390:12:8"},{"id":2197,"nodeType":"UncheckedBlock","src":"13416:271:8","statements":[{"expression":{"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2193,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2154,"src":"13659:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2194,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"13669:3:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13659:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2196,"nodeType":"ExpressionStatement","src":"13659:13:8"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2163,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"13236:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2164,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2109,"src":"13240:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13236:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2199,"initializationExpression":{"assignments":[2158],"declarations":[{"constant":false,"id":2158,"mutability":"mutable","name":"i","nameLocation":"13216:1:8","nodeType":"VariableDeclaration","scope":2199,"src":"13208:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2157,"name":"uint256","nodeType":"ElementaryTypeName","src":"13208:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2162,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2159,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"13220:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2160,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"13228:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13220:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13208:26:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13245:3:8","subExpression":{"id":2166,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"13247:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2168,"nodeType":"ExpressionStatement","src":"13245:3:8"},"nodeType":"ForStatement","src":"13203:494:8"},{"expression":{"components":[{"hexValue":"74727565","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13714:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2201,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2154,"src":"13720:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13713:14:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2115,"id":2203,"nodeType":"Return","src":"13706:21:8"}]},"documentation":{"id":2103,"nodeType":"StructuredDocumentation","src":"12450:227:8","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":2205,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseHexUintUncheckedBounds","nameLocation":"12691:31:8","nodeType":"FunctionDefinition","parameters":{"id":2110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2105,"mutability":"mutable","name":"input","nameLocation":"12746:5:8","nodeType":"VariableDeclaration","scope":2205,"src":"12732:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2104,"name":"string","nodeType":"ElementaryTypeName","src":"12732:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2107,"mutability":"mutable","name":"begin","nameLocation":"12769:5:8","nodeType":"VariableDeclaration","scope":2205,"src":"12761:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2106,"name":"uint256","nodeType":"ElementaryTypeName","src":"12761:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2109,"mutability":"mutable","name":"end","nameLocation":"12792:3:8","nodeType":"VariableDeclaration","scope":2205,"src":"12784:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2108,"name":"uint256","nodeType":"ElementaryTypeName","src":"12784:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12722:79:8"},"returnParameters":{"id":2115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2112,"mutability":"mutable","name":"success","nameLocation":"12829:7:8","nodeType":"VariableDeclaration","scope":2205,"src":"12824:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2111,"name":"bool","nodeType":"ElementaryTypeName","src":"12824:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2114,"mutability":"mutable","name":"value","nameLocation":"12846:5:8","nodeType":"VariableDeclaration","scope":2205,"src":"12838:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2113,"name":"uint256","nodeType":"ElementaryTypeName","src":"12838:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12823:29:8"},"scope":2619,"src":"12682:1052:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2223,"nodeType":"Block","src":"14032:67:8","statements":[{"expression":{"arguments":[{"id":2214,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"14062:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14069:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2218,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"14078:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14072:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2216,"name":"bytes","nodeType":"ElementaryTypeName","src":"14072:5:8","typeDescriptions":{}}},"id":2219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14072:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14085:6:8","memberName":"length","nodeType":"MemberAccess","src":"14072:19:8","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":2213,"name":"parseAddress","nodeType":"Identifier","overloadedDeclarations":[2224,2255],"referencedDeclaration":2255,"src":"14049:12:8","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":2221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14049:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2212,"id":2222,"nodeType":"Return","src":"14042:50:8"}]},"documentation":{"id":2206,"nodeType":"StructuredDocumentation","src":"13740:212:8","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":2224,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"13966:12:8","nodeType":"FunctionDefinition","parameters":{"id":2209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2208,"mutability":"mutable","name":"input","nameLocation":"13993:5:8","nodeType":"VariableDeclaration","scope":2224,"src":"13979:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2207,"name":"string","nodeType":"ElementaryTypeName","src":"13979:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13978:21:8"},"returnParameters":{"id":2212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2224,"src":"14023:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2210,"name":"address","nodeType":"ElementaryTypeName","src":"14023:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14022:9:8"},"scope":2619,"src":"13957:142:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2254,"nodeType":"Block","src":"14472:165:8","statements":[{"assignments":[2237,2239],"declarations":[{"constant":false,"id":2237,"mutability":"mutable","name":"success","nameLocation":"14488:7:8","nodeType":"VariableDeclaration","scope":2254,"src":"14483:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2236,"name":"bool","nodeType":"ElementaryTypeName","src":"14483:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2239,"mutability":"mutable","name":"value","nameLocation":"14505:5:8","nodeType":"VariableDeclaration","scope":2254,"src":"14497:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2238,"name":"address","nodeType":"ElementaryTypeName","src":"14497:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2245,"initialValue":{"arguments":[{"id":2241,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"14530:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2242,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"14537:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2243,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2231,"src":"14544:3:8","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":2240,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[2276,2380],"referencedDeclaration":2380,"src":"14514:15:8","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":2244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14514:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"nodeType":"VariableDeclarationStatement","src":"14482:66:8"},{"condition":{"id":2247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14562:8:8","subExpression":{"id":2246,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"14563:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"14558:50:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2248,"name":"StringsInvalidAddressFormat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1283,"src":"14579:27:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14579:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2250,"nodeType":"RevertStatement","src":"14572:36:8"}},{"expression":{"id":2252,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"14625:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2235,"id":2253,"nodeType":"Return","src":"14618:12:8"}]},"documentation":{"id":2225,"nodeType":"StructuredDocumentation","src":"14105:259:8","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":2255,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14378:12:8","nodeType":"FunctionDefinition","parameters":{"id":2232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2227,"mutability":"mutable","name":"input","nameLocation":"14405:5:8","nodeType":"VariableDeclaration","scope":2255,"src":"14391:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2226,"name":"string","nodeType":"ElementaryTypeName","src":"14391:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2229,"mutability":"mutable","name":"begin","nameLocation":"14420:5:8","nodeType":"VariableDeclaration","scope":2255,"src":"14412:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2228,"name":"uint256","nodeType":"ElementaryTypeName","src":"14412:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2231,"mutability":"mutable","name":"end","nameLocation":"14435:3:8","nodeType":"VariableDeclaration","scope":2255,"src":"14427:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2230,"name":"uint256","nodeType":"ElementaryTypeName","src":"14427:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14390:49:8"},"returnParameters":{"id":2235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2255,"src":"14463:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2233,"name":"address","nodeType":"ElementaryTypeName","src":"14463:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14462:9:8"},"scope":2619,"src":"14369:268:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2275,"nodeType":"Block","src":"14944:70:8","statements":[{"expression":{"arguments":[{"id":2266,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"14977:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14984:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2270,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"14993:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14987:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2268,"name":"bytes","nodeType":"ElementaryTypeName","src":"14987:5:8","typeDescriptions":{}}},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14987:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15000:6:8","memberName":"length","nodeType":"MemberAccess","src":"14987:19:8","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":2265,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[2276,2380],"referencedDeclaration":2380,"src":"14961:15:8","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":2273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14961:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2264,"id":2274,"nodeType":"Return","src":"14954:53:8"}]},"documentation":{"id":2256,"nodeType":"StructuredDocumentation","src":"14643:198:8","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":2276,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"14855:15:8","nodeType":"FunctionDefinition","parameters":{"id":2259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2258,"mutability":"mutable","name":"input","nameLocation":"14885:5:8","nodeType":"VariableDeclaration","scope":2276,"src":"14871:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2257,"name":"string","nodeType":"ElementaryTypeName","src":"14871:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14870:21:8"},"returnParameters":{"id":2264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2261,"mutability":"mutable","name":"success","nameLocation":"14920:7:8","nodeType":"VariableDeclaration","scope":2276,"src":"14915:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2260,"name":"bool","nodeType":"ElementaryTypeName","src":"14915:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2263,"mutability":"mutable","name":"value","nameLocation":"14937:5:8","nodeType":"VariableDeclaration","scope":2276,"src":"14929:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2262,"name":"address","nodeType":"ElementaryTypeName","src":"14929:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14914:29:8"},"scope":2619,"src":"14846:168:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2379,"nodeType":"Block","src":"15407:733:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2290,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"15421:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":2293,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"15433:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15427:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2291,"name":"bytes","nodeType":"ElementaryTypeName","src":"15427:5:8","typeDescriptions":{}}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15427:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15440:6:8","memberName":"length","nodeType":"MemberAccess","src":"15427:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15421:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2297,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"15450:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2298,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"15458:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15450:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15421:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2308,"nodeType":"IfStatement","src":"15417:72:8","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15471:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15486:1:8","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":2303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15478:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2302,"name":"address","nodeType":"ElementaryTypeName","src":"15478:7:8","typeDescriptions":{}}},"id":2305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15478:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15470:19:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2289,"id":2307,"nodeType":"Return","src":"15463:26:8"}},{"assignments":[2310],"declarations":[{"constant":false,"id":2310,"mutability":"mutable","name":"hasPrefix","nameLocation":"15505:9:8","nodeType":"VariableDeclaration","scope":2379,"src":"15500:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2309,"name":"bool","nodeType":"ElementaryTypeName","src":"15500:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2333,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2311,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"15518:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2312,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"15524:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15532:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15524:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15518:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2316,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15517:17:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":2322,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"15574:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15568:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2320,"name":"bytes","nodeType":"ElementaryTypeName","src":"15568:5:8","typeDescriptions":{}}},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15568:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2324,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"15582:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2319,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"15545:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15545:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15538:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2317,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15538:6:8","typeDescriptions":{}}},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15538:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":2329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15600:4:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15593:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2327,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15593:6:8","typeDescriptions":{}}},"id":2330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15593:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"15538:67:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15517:88:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"15500:105:8"},{"assignments":[2335],"declarations":[{"constant":false,"id":2335,"mutability":"mutable","name":"expectedLength","nameLocation":"15694:14:8","nodeType":"VariableDeclaration","scope":2379,"src":"15686:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2334,"name":"uint256","nodeType":"ElementaryTypeName","src":"15686:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2343,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3430","id":2336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15711:2:8","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2337,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"15716:9:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15726:6:8","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"15716:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15716:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15737:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15716:22:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15711:27:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15686:52:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"15803:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2345,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"15809:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15803:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2347,"name":"expectedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"15818:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15803:29:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2377,"nodeType":"Block","src":"16083:51:8","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":2370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16105:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":2373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16120:1:8","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":2372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16112:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2371,"name":"address","nodeType":"ElementaryTypeName","src":"16112:7:8","typeDescriptions":{}}},"id":2374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16112:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2375,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16104:19:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2289,"id":2376,"nodeType":"Return","src":"16097:26:8"}]},"id":2378,"nodeType":"IfStatement","src":"15799:335:8","trueBody":{"id":2369,"nodeType":"Block","src":"15834:243:8","statements":[{"assignments":[2350,2352],"declarations":[{"constant":false,"id":2350,"mutability":"mutable","name":"s","nameLocation":"15955:1:8","nodeType":"VariableDeclaration","scope":2369,"src":"15950:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2349,"name":"bool","nodeType":"ElementaryTypeName","src":"15950:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2352,"mutability":"mutable","name":"v","nameLocation":"15966:1:8","nodeType":"VariableDeclaration","scope":2369,"src":"15958:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2351,"name":"uint256","nodeType":"ElementaryTypeName","src":"15958:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2358,"initialValue":{"arguments":[{"id":2354,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"16003:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2355,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"16010:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2356,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"16017:3:8","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":2353,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"15971:31:8","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":2357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15971:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15949:72:8"},{"expression":{"components":[{"id":2359,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2350,"src":"16043:1:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"id":2364,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2352,"src":"16062:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16054:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2362,"name":"uint160","nodeType":"ElementaryTypeName","src":"16054:7:8","typeDescriptions":{}}},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16046:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2360,"name":"address","nodeType":"ElementaryTypeName","src":"16046:7:8","typeDescriptions":{}}},"id":2366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16046:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16042:24:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2289,"id":2368,"nodeType":"Return","src":"16035:31:8"}]}}]},"documentation":{"id":2277,"nodeType":"StructuredDocumentation","src":"15020:226:8","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":2380,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15260:15:8","nodeType":"FunctionDefinition","parameters":{"id":2284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2279,"mutability":"mutable","name":"input","nameLocation":"15299:5:8","nodeType":"VariableDeclaration","scope":2380,"src":"15285:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2278,"name":"string","nodeType":"ElementaryTypeName","src":"15285:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2281,"mutability":"mutable","name":"begin","nameLocation":"15322:5:8","nodeType":"VariableDeclaration","scope":2380,"src":"15314:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2280,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2283,"mutability":"mutable","name":"end","nameLocation":"15345:3:8","nodeType":"VariableDeclaration","scope":2380,"src":"15337:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2282,"name":"uint256","nodeType":"ElementaryTypeName","src":"15337:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15275:79:8"},"returnParameters":{"id":2289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2286,"mutability":"mutable","name":"success","nameLocation":"15383:7:8","nodeType":"VariableDeclaration","scope":2380,"src":"15378:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2285,"name":"bool","nodeType":"ElementaryTypeName","src":"15378:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2288,"mutability":"mutable","name":"value","nameLocation":"15400:5:8","nodeType":"VariableDeclaration","scope":2380,"src":"15392:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2287,"name":"address","nodeType":"ElementaryTypeName","src":"15392:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15377:29:8"},"scope":2619,"src":"15251:889:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2439,"nodeType":"Block","src":"16209:461:8","statements":[{"assignments":[2388],"declarations":[{"constant":false,"id":2388,"mutability":"mutable","name":"value","nameLocation":"16225:5:8","nodeType":"VariableDeclaration","scope":2439,"src":"16219:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2387,"name":"uint8","nodeType":"ElementaryTypeName","src":"16219:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2393,"initialValue":{"arguments":[{"id":2391,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"16239:3:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":2390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16233:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2389,"name":"uint8","nodeType":"ElementaryTypeName","src":"16233:5:8","typeDescriptions":{}}},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16233:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16219:24:8"},{"id":2436,"nodeType":"UncheckedBlock","src":"16403:238:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16431:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3437","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16439:2:8","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"src":"16431:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2397,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16445:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3538","id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16453:2:8","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"src":"16445:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16431:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2405,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16491:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16499:2:8","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"16491:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16505:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313033","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16513:3:8","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"src":"16505:11:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16491:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16552:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16560:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"16552:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2419,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16566:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3731","id":2420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16574:2:8","typeDescriptions":{"typeIdentifier":"t_rational_71_by_1","typeString":"int_const 71"},"value":"71"},"src":"16566:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16552:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"expression":{"arguments":[{"id":2429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16620:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2428,"name":"uint8","nodeType":"ElementaryTypeName","src":"16620:5:8","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":2427,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16615:4:8","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16615:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":2431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16627:3:8","memberName":"max","nodeType":"MemberAccess","src":"16615:15:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":2386,"id":2432,"nodeType":"Return","src":"16608:22:8"},"id":2433,"nodeType":"IfStatement","src":"16548:82:8","trueBody":{"expression":{"id":2425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16578:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3535","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16587:2:8","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"55"},"src":"16578:11:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2426,"nodeType":"ExpressionStatement","src":"16578:11:8"}},"id":2434,"nodeType":"IfStatement","src":"16487:143:8","trueBody":{"expression":{"id":2414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16518:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3837","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16527:2:8","typeDescriptions":{"typeIdentifier":"t_rational_87_by_1","typeString":"int_const 87"},"value":"87"},"src":"16518:11:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2415,"nodeType":"ExpressionStatement","src":"16518:11:8"}},"id":2435,"nodeType":"IfStatement","src":"16427:203:8","trueBody":{"expression":{"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2401,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16457:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3438","id":2402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16466:2:8","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"src":"16457:11:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2404,"nodeType":"ExpressionStatement","src":"16457:11:8"}}]},{"expression":{"id":2437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"16658:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":2386,"id":2438,"nodeType":"Return","src":"16651:12:8"}]},"id":2440,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseChr","nameLocation":"16155:12:8","nodeType":"FunctionDefinition","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2382,"mutability":"mutable","name":"chr","nameLocation":"16175:3:8","nodeType":"VariableDeclaration","scope":2440,"src":"16168:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2381,"name":"bytes1","nodeType":"ElementaryTypeName","src":"16168:6:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"16167:12:8"},"returnParameters":{"id":2386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2440,"src":"16202:5:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2384,"name":"uint8","nodeType":"ElementaryTypeName","src":"16202:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16201:7:8"},"scope":2619,"src":"16146:524:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2605,"nodeType":"Block","src":"17336:1331:8","statements":[{"assignments":[2449],"declarations":[{"constant":false,"id":2449,"mutability":"mutable","name":"buffer","nameLocation":"17359:6:8","nodeType":"VariableDeclaration","scope":2605,"src":"17346:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2448,"name":"bytes","nodeType":"ElementaryTypeName","src":"17346:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2454,"initialValue":{"arguments":[{"id":2452,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2443,"src":"17374:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17368:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2450,"name":"bytes","nodeType":"ElementaryTypeName","src":"17368:5:8","typeDescriptions":{}}},"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17368:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17346:34:8"},{"assignments":[2456],"declarations":[{"constant":false,"id":2456,"mutability":"mutable","name":"output","nameLocation":"17403:6:8","nodeType":"VariableDeclaration","scope":2605,"src":"17390:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2455,"name":"bytes","nodeType":"ElementaryTypeName","src":"17390:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2464,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17422:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":2460,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"17426:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17433:6:8","memberName":"length","nodeType":"MemberAccess","src":"17426:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17422:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17412:9:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2457,"name":"bytes","nodeType":"ElementaryTypeName","src":"17416:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17412:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17390:50:8"},{"assignments":[2466],"declarations":[{"constant":false,"id":2466,"mutability":"mutable","name":"outputLength","nameLocation":"17481:12:8","nodeType":"VariableDeclaration","scope":2605,"src":"17473:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2465,"name":"uint256","nodeType":"ElementaryTypeName","src":"17473:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2468,"initialValue":{"hexValue":"30","id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17496:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17473:24:8"},{"body":{"id":2597,"nodeType":"Block","src":"17548:854:8","statements":[{"assignments":[2480],"declarations":[{"constant":false,"id":2480,"mutability":"mutable","name":"char","nameLocation":"17569:4:8","nodeType":"VariableDeclaration","scope":2597,"src":"17562:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2479,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17562:6:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":2488,"initialValue":{"arguments":[{"arguments":[{"id":2484,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"17606:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2485,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2470,"src":"17614:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2483,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"17583:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17583:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17576:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2481,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17576:6:8","typeDescriptions":{}}},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17576:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"17562:55:8"},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2489,"name":"SPECIAL_CHARS_LOOKUP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1270,"src":"17637:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17661:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"arguments":[{"id":2493,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"17672:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":2492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17666:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2491,"name":"uint8","nodeType":"ElementaryTypeName","src":"17666:5:8","typeDescriptions":{}}},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17666:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17661:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2496,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17660:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17637:41:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2498,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17636:43:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17683:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17636:48:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17635:50:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2595,"nodeType":"Block","src":"18330:62:8","statements":[{"expression":{"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2588,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"18348:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2591,"indexExpression":{"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18355:14:8","subExpression":{"id":2589,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"18355:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2592,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"18373:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"18348:29:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2594,"nodeType":"ExpressionStatement","src":"18348:29:8"}]},"id":2596,"nodeType":"IfStatement","src":"17631:761:8","trueBody":{"id":2587,"nodeType":"Block","src":"17687:637:8","statements":[{"expression":{"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2502,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"17705:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2505,"indexExpression":{"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17712:14:8","subExpression":{"id":2503,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"17712:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17730:4:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"17705:29:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2508,"nodeType":"ExpressionStatement","src":"17705:29:8"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2509,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"17756:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":2510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17764:4:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"17756:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2519,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"17825:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039","id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17833:4:8","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"17825:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2529,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"17894:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783061","id":2530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17902:4:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"17894:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2539,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"17963:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783063","id":2540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17971:4:8","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"17963:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2549,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"18032:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783064","id":2550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18040:4:8","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"18032:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2559,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"18101:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783563","id":2560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18109:4:8","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"18101:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"18171:4:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783232","id":2570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18179:4:8","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"18171:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2580,"nodeType":"IfStatement","src":"18167:143:8","trueBody":{"id":2579,"nodeType":"Block","src":"18185:125:8","statements":[{"expression":{"id":2577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2572,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"18263:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2575,"indexExpression":{"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18270:14:8","subExpression":{"id":2573,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"18270:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"22","id":2576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18288:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""},"src":"18263:28:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2578,"nodeType":"ExpressionStatement","src":"18263:28:8"}]}},"id":2581,"nodeType":"IfStatement","src":"18097:213:8","trueBody":{"expression":{"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2562,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"18115:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2565,"indexExpression":{"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18122:14:8","subExpression":{"id":2563,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"18122:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18140:4:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"18115:29:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2568,"nodeType":"ExpressionStatement","src":"18115:29:8"}},"id":2582,"nodeType":"IfStatement","src":"18028:282:8","trueBody":{"expression":{"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2552,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"18046:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2555,"indexExpression":{"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18053:14:8","subExpression":{"id":2553,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"18053:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"72","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18071:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""},"value":"r"},"src":"18046:28:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2558,"nodeType":"ExpressionStatement","src":"18046:28:8"}},"id":2583,"nodeType":"IfStatement","src":"17959:351:8","trueBody":{"expression":{"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2542,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"17977:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2545,"indexExpression":{"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17984:14:8","subExpression":{"id":2543,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"17984:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66","id":2546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18002:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""},"value":"f"},"src":"17977:28:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2548,"nodeType":"ExpressionStatement","src":"17977:28:8"}},"id":2584,"nodeType":"IfStatement","src":"17890:420:8","trueBody":{"expression":{"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2532,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"17908:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2535,"indexExpression":{"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17915:14:8","subExpression":{"id":2533,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"17915:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"6e","id":2536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17933:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""},"value":"n"},"src":"17908:28:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2538,"nodeType":"ExpressionStatement","src":"17908:28:8"}},"id":2585,"nodeType":"IfStatement","src":"17821:489:8","trueBody":{"expression":{"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2522,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"17839:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2525,"indexExpression":{"id":2524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17846:14:8","subExpression":{"id":2523,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"17846:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74","id":2526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17864:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""},"value":"t"},"src":"17839:28:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2528,"nodeType":"ExpressionStatement","src":"17839:28:8"}},"id":2586,"nodeType":"IfStatement","src":"17752:558:8","trueBody":{"expression":{"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2512,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"17770:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2515,"indexExpression":{"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17777:14:8","subExpression":{"id":2513,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"17777:12:8","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:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"62","id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17795:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""},"value":"b"},"src":"17770:28:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2518,"nodeType":"ExpressionStatement","src":"17770:28:8"}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2472,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2470,"src":"17524:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2473,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"17528:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17535:6:8","memberName":"length","nodeType":"MemberAccess","src":"17528:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17524:17:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2598,"initializationExpression":{"assignments":[2470],"declarations":[{"constant":false,"id":2470,"mutability":"mutable","name":"i","nameLocation":"17521:1:8","nodeType":"VariableDeclaration","scope":2598,"src":"17513:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2469,"name":"uint256","nodeType":"ElementaryTypeName","src":"17513:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2471,"nodeType":"VariableDeclarationStatement","src":"17513:9:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17543:3:8","subExpression":{"id":2476,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2470,"src":"17545:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2478,"nodeType":"ExpressionStatement","src":"17543:3:8"},"nodeType":"ForStatement","src":"17508:894:8"},{"AST":{"nativeSrc":"18500:129:8","nodeType":"YulBlock","src":"18500:129:8","statements":[{"expression":{"arguments":[{"name":"output","nativeSrc":"18521:6:8","nodeType":"YulIdentifier","src":"18521:6:8"},{"name":"outputLength","nativeSrc":"18529:12:8","nodeType":"YulIdentifier","src":"18529:12:8"}],"functionName":{"name":"mstore","nativeSrc":"18514:6:8","nodeType":"YulIdentifier","src":"18514:6:8"},"nativeSrc":"18514:28:8","nodeType":"YulFunctionCall","src":"18514:28:8"},"nativeSrc":"18514:28:8","nodeType":"YulExpressionStatement","src":"18514:28:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18562:4:8","nodeType":"YulLiteral","src":"18562:4:8","type":"","value":"0x40"},{"arguments":[{"name":"output","nativeSrc":"18572:6:8","nodeType":"YulIdentifier","src":"18572:6:8"},{"arguments":[{"kind":"number","nativeSrc":"18584:1:8","nodeType":"YulLiteral","src":"18584:1:8","type":"","value":"5"},{"arguments":[{"kind":"number","nativeSrc":"18591:1:8","nodeType":"YulLiteral","src":"18591:1:8","type":"","value":"5"},{"arguments":[{"name":"outputLength","nativeSrc":"18598:12:8","nodeType":"YulIdentifier","src":"18598:12:8"},{"kind":"number","nativeSrc":"18612:2:8","nodeType":"YulLiteral","src":"18612:2:8","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"18594:3:8","nodeType":"YulIdentifier","src":"18594:3:8"},"nativeSrc":"18594:21:8","nodeType":"YulFunctionCall","src":"18594:21:8"}],"functionName":{"name":"shr","nativeSrc":"18587:3:8","nodeType":"YulIdentifier","src":"18587:3:8"},"nativeSrc":"18587:29:8","nodeType":"YulFunctionCall","src":"18587:29:8"}],"functionName":{"name":"shl","nativeSrc":"18580:3:8","nodeType":"YulIdentifier","src":"18580:3:8"},"nativeSrc":"18580:37:8","nodeType":"YulFunctionCall","src":"18580:37:8"}],"functionName":{"name":"add","nativeSrc":"18568:3:8","nodeType":"YulIdentifier","src":"18568:3:8"},"nativeSrc":"18568:50:8","nodeType":"YulFunctionCall","src":"18568:50:8"}],"functionName":{"name":"mstore","nativeSrc":"18555:6:8","nodeType":"YulIdentifier","src":"18555:6:8"},"nativeSrc":"18555:64:8","nodeType":"YulFunctionCall","src":"18555:64:8"},"nativeSrc":"18555:64:8","nodeType":"YulExpressionStatement","src":"18555:64:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":2456,"isOffset":false,"isSlot":false,"src":"18521:6:8","valueSize":1},{"declaration":2456,"isOffset":false,"isSlot":false,"src":"18572:6:8","valueSize":1},{"declaration":2466,"isOffset":false,"isSlot":false,"src":"18529:12:8","valueSize":1},{"declaration":2466,"isOffset":false,"isSlot":false,"src":"18598:12:8","valueSize":1}],"flags":["memory-safe"],"id":2599,"nodeType":"InlineAssembly","src":"18475:154:8"},{"expression":{"arguments":[{"id":2602,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"18653:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18646:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2600,"name":"string","nodeType":"ElementaryTypeName","src":"18646:6:8","typeDescriptions":{}}},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18646:14:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2447,"id":2604,"nodeType":"Return","src":"18639:21:8"}]},"documentation":{"id":2441,"nodeType":"StructuredDocumentation","src":"16676:576:8","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":2606,"implemented":true,"kind":"function","modifiers":[],"name":"escapeJSON","nameLocation":"17266:10:8","nodeType":"FunctionDefinition","parameters":{"id":2444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2443,"mutability":"mutable","name":"input","nameLocation":"17291:5:8","nodeType":"VariableDeclaration","scope":2606,"src":"17277:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2442,"name":"string","nodeType":"ElementaryTypeName","src":"17277:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17276:21:8"},"returnParameters":{"id":2447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2606,"src":"17321:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2445,"name":"string","nodeType":"ElementaryTypeName","src":"17321:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17320:15:8"},"scope":2619,"src":"17257:1410:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2617,"nodeType":"Block","src":"19052:225:8","statements":[{"AST":{"nativeSrc":"19201:70:8","nodeType":"YulBlock","src":"19201:70:8","statements":[{"nativeSrc":"19215:46:8","nodeType":"YulAssignment","src":"19215:46:8","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"19238:6:8","nodeType":"YulIdentifier","src":"19238:6:8"},{"kind":"number","nativeSrc":"19246:4:8","nodeType":"YulLiteral","src":"19246:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19234:3:8","nodeType":"YulIdentifier","src":"19234:3:8"},"nativeSrc":"19234:17:8","nodeType":"YulFunctionCall","src":"19234:17:8"},{"name":"offset","nativeSrc":"19253:6:8","nodeType":"YulIdentifier","src":"19253:6:8"}],"functionName":{"name":"add","nativeSrc":"19230:3:8","nodeType":"YulIdentifier","src":"19230:3:8"},"nativeSrc":"19230:30:8","nodeType":"YulFunctionCall","src":"19230:30:8"}],"functionName":{"name":"mload","nativeSrc":"19224:5:8","nodeType":"YulIdentifier","src":"19224:5:8"},"nativeSrc":"19224:37:8","nodeType":"YulFunctionCall","src":"19224:37:8"},"variableNames":[{"name":"value","nativeSrc":"19215:5:8","nodeType":"YulIdentifier","src":"19215:5:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2609,"isOffset":false,"isSlot":false,"src":"19238:6:8","valueSize":1},{"declaration":2611,"isOffset":false,"isSlot":false,"src":"19253:6:8","valueSize":1},{"declaration":2614,"isOffset":false,"isSlot":false,"src":"19215:5:8","valueSize":1}],"flags":["memory-safe"],"id":2616,"nodeType":"InlineAssembly","src":"19176:95:8"}]},"documentation":{"id":2607,"nodeType":"StructuredDocumentation","src":"18673:268:8","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":2618,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"18955:22:8","nodeType":"FunctionDefinition","parameters":{"id":2612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2609,"mutability":"mutable","name":"buffer","nameLocation":"18991:6:8","nodeType":"VariableDeclaration","scope":2618,"src":"18978:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2608,"name":"bytes","nodeType":"ElementaryTypeName","src":"18978:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2611,"mutability":"mutable","name":"offset","nameLocation":"19007:6:8","nodeType":"VariableDeclaration","scope":2618,"src":"18999:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2610,"name":"uint256","nodeType":"ElementaryTypeName","src":"18999:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18977:37:8"},"returnParameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"value","nameLocation":"19045:5:8","nodeType":"VariableDeclaration","scope":2618,"src":"19037:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19037:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19036:15:8"},"scope":2619,"src":"18946:331:8","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2620,"src":"297:18982:8","usedErrors":[1277,1280,1283],"usedEvents":[]}],"src":"101:19179:8"},"id":8},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[2967]},"id":2968,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2621,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":2622,"nodeType":"StructuredDocumentation","src":"138:205:9","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":2967,"linearizedBaseContracts":[2967],"name":"ECDSA","nameLocation":"352:5:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSA.RecoverError","id":2627,"members":[{"id":2623,"name":"NoError","nameLocation":"392:7:9","nodeType":"EnumValue","src":"392:7:9"},{"id":2624,"name":"InvalidSignature","nameLocation":"409:16:9","nodeType":"EnumValue","src":"409:16:9"},{"id":2625,"name":"InvalidSignatureLength","nameLocation":"435:22:9","nodeType":"EnumValue","src":"435:22:9"},{"id":2626,"name":"InvalidSignatureS","nameLocation":"467:17:9","nodeType":"EnumValue","src":"467:17:9"}],"name":"RecoverError","nameLocation":"369:12:9","nodeType":"EnumDefinition","src":"364:126:9"},{"documentation":{"id":2628,"nodeType":"StructuredDocumentation","src":"496:63:9","text":" @dev The signature derives the `address(0)`."},"errorSelector":"f645eedf","id":2630,"name":"ECDSAInvalidSignature","nameLocation":"570:21:9","nodeType":"ErrorDefinition","parameters":{"id":2629,"nodeType":"ParameterList","parameters":[],"src":"591:2:9"},"src":"564:30:9"},{"documentation":{"id":2631,"nodeType":"StructuredDocumentation","src":"600:60:9","text":" @dev The signature has an invalid length."},"errorSelector":"fce698f7","id":2635,"name":"ECDSAInvalidSignatureLength","nameLocation":"671:27:9","nodeType":"ErrorDefinition","parameters":{"id":2634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2633,"mutability":"mutable","name":"length","nameLocation":"707:6:9","nodeType":"VariableDeclaration","scope":2635,"src":"699:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2632,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"698:16:9"},"src":"665:50:9"},{"documentation":{"id":2636,"nodeType":"StructuredDocumentation","src":"721:85:9","text":" @dev The signature has an S value that is in the upper half order."},"errorSelector":"d78bce0c","id":2640,"name":"ECDSAInvalidSignatureS","nameLocation":"817:22:9","nodeType":"ErrorDefinition","parameters":{"id":2639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2638,"mutability":"mutable","name":"s","nameLocation":"848:1:9","nodeType":"VariableDeclaration","scope":2640,"src":"840:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"839:11:9"},"src":"811:40:9"},{"body":{"id":2692,"nodeType":"Block","src":"2285:622:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2655,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2645,"src":"2299:9:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2309:6:9","memberName":"length","nodeType":"MemberAccess","src":"2299:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":2657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2319:2:9","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2299:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2690,"nodeType":"Block","src":"2793:108:9","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":2679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:1:9","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":2678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2815:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"2815:7:9","typeDescriptions":{}}},"id":2680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2815:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2681,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"2827:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2840:22:9","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"2827:35:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"expression":{"id":2685,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2645,"src":"2872:9:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2882:6:9","memberName":"length","nodeType":"MemberAccess","src":"2872:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2864:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2683,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2864:7:9","typeDescriptions":{}}},"id":2687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2864:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2814:76:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2654,"id":2689,"nodeType":"Return","src":"2807:83:9"}]},"id":2691,"nodeType":"IfStatement","src":"2295:606:9","trueBody":{"id":2676,"nodeType":"Block","src":"2323:464:9","statements":[{"assignments":[2660],"declarations":[{"constant":false,"id":2660,"mutability":"mutable","name":"r","nameLocation":"2345:1:9","nodeType":"VariableDeclaration","scope":2676,"src":"2337:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2337:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2661,"nodeType":"VariableDeclarationStatement","src":"2337:9:9"},{"assignments":[2663],"declarations":[{"constant":false,"id":2663,"mutability":"mutable","name":"s","nameLocation":"2368:1:9","nodeType":"VariableDeclaration","scope":2676,"src":"2360:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2360:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2664,"nodeType":"VariableDeclarationStatement","src":"2360:9:9"},{"assignments":[2666],"declarations":[{"constant":false,"id":2666,"mutability":"mutable","name":"v","nameLocation":"2389:1:9","nodeType":"VariableDeclaration","scope":2676,"src":"2383:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2665,"name":"uint8","nodeType":"ElementaryTypeName","src":"2383:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2667,"nodeType":"VariableDeclarationStatement","src":"2383:7:9"},{"AST":{"nativeSrc":"2560:171:9","nodeType":"YulBlock","src":"2560:171:9","statements":[{"nativeSrc":"2578:32:9","nodeType":"YulAssignment","src":"2578:32:9","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2593:9:9","nodeType":"YulIdentifier","src":"2593:9:9"},{"kind":"number","nativeSrc":"2604:4:9","nodeType":"YulLiteral","src":"2604:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2589:3:9","nodeType":"YulIdentifier","src":"2589:3:9"},"nativeSrc":"2589:20:9","nodeType":"YulFunctionCall","src":"2589:20:9"}],"functionName":{"name":"mload","nativeSrc":"2583:5:9","nodeType":"YulIdentifier","src":"2583:5:9"},"nativeSrc":"2583:27:9","nodeType":"YulFunctionCall","src":"2583:27:9"},"variableNames":[{"name":"r","nativeSrc":"2578:1:9","nodeType":"YulIdentifier","src":"2578:1:9"}]},{"nativeSrc":"2627:32:9","nodeType":"YulAssignment","src":"2627:32:9","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2642:9:9","nodeType":"YulIdentifier","src":"2642:9:9"},{"kind":"number","nativeSrc":"2653:4:9","nodeType":"YulLiteral","src":"2653:4:9","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2638:3:9","nodeType":"YulIdentifier","src":"2638:3:9"},"nativeSrc":"2638:20:9","nodeType":"YulFunctionCall","src":"2638:20:9"}],"functionName":{"name":"mload","nativeSrc":"2632:5:9","nodeType":"YulIdentifier","src":"2632:5:9"},"nativeSrc":"2632:27:9","nodeType":"YulFunctionCall","src":"2632:27:9"},"variableNames":[{"name":"s","nativeSrc":"2627:1:9","nodeType":"YulIdentifier","src":"2627:1:9"}]},{"nativeSrc":"2676:41:9","nodeType":"YulAssignment","src":"2676:41:9","value":{"arguments":[{"kind":"number","nativeSrc":"2686:1:9","nodeType":"YulLiteral","src":"2686:1:9","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2699:9:9","nodeType":"YulIdentifier","src":"2699:9:9"},{"kind":"number","nativeSrc":"2710:4:9","nodeType":"YulLiteral","src":"2710:4:9","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2695:3:9","nodeType":"YulIdentifier","src":"2695:3:9"},"nativeSrc":"2695:20:9","nodeType":"YulFunctionCall","src":"2695:20:9"}],"functionName":{"name":"mload","nativeSrc":"2689:5:9","nodeType":"YulIdentifier","src":"2689:5:9"},"nativeSrc":"2689:27:9","nodeType":"YulFunctionCall","src":"2689:27:9"}],"functionName":{"name":"byte","nativeSrc":"2681:4:9","nodeType":"YulIdentifier","src":"2681:4:9"},"nativeSrc":"2681:36:9","nodeType":"YulFunctionCall","src":"2681:36:9"},"variableNames":[{"name":"v","nativeSrc":"2676:1:9","nodeType":"YulIdentifier","src":"2676:1:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2660,"isOffset":false,"isSlot":false,"src":"2578:1:9","valueSize":1},{"declaration":2663,"isOffset":false,"isSlot":false,"src":"2627:1:9","valueSize":1},{"declaration":2645,"isOffset":false,"isSlot":false,"src":"2593:9:9","valueSize":1},{"declaration":2645,"isOffset":false,"isSlot":false,"src":"2642:9:9","valueSize":1},{"declaration":2645,"isOffset":false,"isSlot":false,"src":"2699:9:9","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"2676:1:9","valueSize":1}],"flags":["memory-safe"],"id":2668,"nodeType":"InlineAssembly","src":"2535:196:9"},{"expression":{"arguments":[{"id":2670,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"2762:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2671,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2666,"src":"2768:1:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2672,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"2771:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2673,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2663,"src":"2774:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2669,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2693,2773,2881],"referencedDeclaration":2881,"src":"2751:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2654,"id":2675,"nodeType":"Return","src":"2744:32:9"}]}}]},"documentation":{"id":2641,"nodeType":"StructuredDocumentation","src":"857:1267:9","text":" @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]"},"id":2693,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2138:10:9","nodeType":"FunctionDefinition","parameters":{"id":2646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2643,"mutability":"mutable","name":"hash","nameLocation":"2166:4:9","nodeType":"VariableDeclaration","scope":2693,"src":"2158:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2158:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2645,"mutability":"mutable","name":"signature","nameLocation":"2193:9:9","nodeType":"VariableDeclaration","scope":2693,"src":"2180:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2644,"name":"bytes","nodeType":"ElementaryTypeName","src":"2180:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2148:60:9"},"returnParameters":{"id":2654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2648,"mutability":"mutable","name":"recovered","nameLocation":"2240:9:9","nodeType":"VariableDeclaration","scope":2693,"src":"2232:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2647,"name":"address","nodeType":"ElementaryTypeName","src":"2232:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2651,"mutability":"mutable","name":"err","nameLocation":"2264:3:9","nodeType":"VariableDeclaration","scope":2693,"src":"2251:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2650,"nodeType":"UserDefinedTypeName","pathNode":{"id":2649,"name":"RecoverError","nameLocations":["2251:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":2627,"src":"2251:12:9"},"referencedDeclaration":2627,"src":"2251:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2653,"mutability":"mutable","name":"errArg","nameLocation":"2277:6:9","nodeType":"VariableDeclaration","scope":2693,"src":"2269:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2269:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2231:53:9"},"scope":2967,"src":"2129:778:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2722,"nodeType":"Block","src":"3801:168:9","statements":[{"assignments":[2704,2707,2709],"declarations":[{"constant":false,"id":2704,"mutability":"mutable","name":"recovered","nameLocation":"3820:9:9","nodeType":"VariableDeclaration","scope":2722,"src":"3812:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2703,"name":"address","nodeType":"ElementaryTypeName","src":"3812:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2707,"mutability":"mutable","name":"error","nameLocation":"3844:5:9","nodeType":"VariableDeclaration","scope":2722,"src":"3831:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2706,"nodeType":"UserDefinedTypeName","pathNode":{"id":2705,"name":"RecoverError","nameLocations":["3831:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":2627,"src":"3831:12:9"},"referencedDeclaration":2627,"src":"3831:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2709,"mutability":"mutable","name":"errorArg","nameLocation":"3859:8:9","nodeType":"VariableDeclaration","scope":2722,"src":"3851:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3851:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2714,"initialValue":{"arguments":[{"id":2711,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"3882:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2712,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"3888:9:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2710,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2693,2773,2881],"referencedDeclaration":2693,"src":"3871:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3871:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"3811:87:9"},{"expression":{"arguments":[{"id":2716,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"3920:5:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},{"id":2717,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"3927:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2715,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"3908:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2627_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3908:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2719,"nodeType":"ExpressionStatement","src":"3908:28:9"},{"expression":{"id":2720,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"3953:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2702,"id":2721,"nodeType":"Return","src":"3946:16:9"}]},"documentation":{"id":2694,"nodeType":"StructuredDocumentation","src":"2913:796:9","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it."},"id":2723,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3723:7:9","nodeType":"FunctionDefinition","parameters":{"id":2699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"hash","nameLocation":"3739:4:9","nodeType":"VariableDeclaration","scope":2723,"src":"3731:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2695,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3731:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"signature","nameLocation":"3758:9:9","nodeType":"VariableDeclaration","scope":2723,"src":"3745:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2697,"name":"bytes","nodeType":"ElementaryTypeName","src":"3745:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3730:38:9"},"returnParameters":{"id":2702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2723,"src":"3792:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2700,"name":"address","nodeType":"ElementaryTypeName","src":"3792:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3791:9:9"},"scope":2967,"src":"3714:255:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2772,"nodeType":"Block","src":"4348:342:9","statements":[{"id":2771,"nodeType":"UncheckedBlock","src":"4358:326:9","statements":[{"assignments":[2741],"declarations":[{"constant":false,"id":2741,"mutability":"mutable","name":"s","nameLocation":"4390:1:9","nodeType":"VariableDeclaration","scope":2771,"src":"4382:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2740,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4382:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2748,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2742,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"4394:2:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":2745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4407:66:9","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":2744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4399:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4399:7:9","typeDescriptions":{}}},"id":2746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4399:75:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4394:80:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4382:92:9"},{"assignments":[2750],"declarations":[{"constant":false,"id":2750,"mutability":"mutable","name":"v","nameLocation":"4591:1:9","nodeType":"VariableDeclaration","scope":2771,"src":"4585:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2749,"name":"uint8","nodeType":"ElementaryTypeName","src":"4585:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2763,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2755,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"4610:2:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4602:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2753,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:9","typeDescriptions":{}}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4602:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4617:3:9","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4602:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2759,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4601:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":2760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4624:2:9","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4601:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4595:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2751,"name":"uint8","nodeType":"ElementaryTypeName","src":"4595:5:9","typeDescriptions":{}}},"id":2762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4595:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4585:42:9"},{"expression":{"arguments":[{"id":2765,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2726,"src":"4659:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2766,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2750,"src":"4665:1:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2767,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"4668:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2768,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"4671:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2764,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2693,2773,2881],"referencedDeclaration":2881,"src":"4648:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4648:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2739,"id":2770,"nodeType":"Return","src":"4641:32:9"}]}]},"documentation":{"id":2724,"nodeType":"StructuredDocumentation","src":"3975:205:9","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]"},"id":2773,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4194:10:9","nodeType":"FunctionDefinition","parameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2726,"mutability":"mutable","name":"hash","nameLocation":"4222:4:9","nodeType":"VariableDeclaration","scope":2773,"src":"4214:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2725,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4214:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2728,"mutability":"mutable","name":"r","nameLocation":"4244:1:9","nodeType":"VariableDeclaration","scope":2773,"src":"4236:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2727,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4236:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2730,"mutability":"mutable","name":"vs","nameLocation":"4263:2:9","nodeType":"VariableDeclaration","scope":2773,"src":"4255:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2729,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4255:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4204:67:9"},"returnParameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2733,"mutability":"mutable","name":"recovered","nameLocation":"4303:9:9","nodeType":"VariableDeclaration","scope":2773,"src":"4295:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2732,"name":"address","nodeType":"ElementaryTypeName","src":"4295:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2736,"mutability":"mutable","name":"err","nameLocation":"4327:3:9","nodeType":"VariableDeclaration","scope":2773,"src":"4314:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2735,"nodeType":"UserDefinedTypeName","pathNode":{"id":2734,"name":"RecoverError","nameLocations":["4314:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":2627,"src":"4314:12:9"},"referencedDeclaration":2627,"src":"4314:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2738,"mutability":"mutable","name":"errArg","nameLocation":"4340:6:9","nodeType":"VariableDeclaration","scope":2773,"src":"4332:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2737,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4332:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4294:53:9"},"scope":2967,"src":"4185:505:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2805,"nodeType":"Block","src":"4903:164:9","statements":[{"assignments":[2786,2789,2791],"declarations":[{"constant":false,"id":2786,"mutability":"mutable","name":"recovered","nameLocation":"4922:9:9","nodeType":"VariableDeclaration","scope":2805,"src":"4914:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"4914:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2789,"mutability":"mutable","name":"error","nameLocation":"4946:5:9","nodeType":"VariableDeclaration","scope":2805,"src":"4933:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2788,"nodeType":"UserDefinedTypeName","pathNode":{"id":2787,"name":"RecoverError","nameLocations":["4933:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":2627,"src":"4933:12:9"},"referencedDeclaration":2627,"src":"4933:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2791,"mutability":"mutable","name":"errorArg","nameLocation":"4961:8:9","nodeType":"VariableDeclaration","scope":2805,"src":"4953:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4953:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2797,"initialValue":{"arguments":[{"id":2793,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"4984:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2794,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"4990:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2795,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2780,"src":"4993:2:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2792,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2693,2773,2881],"referencedDeclaration":2773,"src":"4973:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4973:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"4913:83:9"},{"expression":{"arguments":[{"id":2799,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2789,"src":"5018:5:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},{"id":2800,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2791,"src":"5025:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2798,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"5006:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2627_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2802,"nodeType":"ExpressionStatement","src":"5006:28:9"},{"expression":{"id":2803,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"5051:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2784,"id":2804,"nodeType":"Return","src":"5044:16:9"}]},"documentation":{"id":2774,"nodeType":"StructuredDocumentation","src":"4696:116:9","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately."},"id":2806,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4826:7:9","nodeType":"FunctionDefinition","parameters":{"id":2781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2776,"mutability":"mutable","name":"hash","nameLocation":"4842:4:9","nodeType":"VariableDeclaration","scope":2806,"src":"4834:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4834:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2778,"mutability":"mutable","name":"r","nameLocation":"4856:1:9","nodeType":"VariableDeclaration","scope":2806,"src":"4848:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2777,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4848:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2780,"mutability":"mutable","name":"vs","nameLocation":"4867:2:9","nodeType":"VariableDeclaration","scope":2806,"src":"4859:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2779,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4859:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4833:37:9"},"returnParameters":{"id":2784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2783,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2806,"src":"4894:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2782,"name":"address","nodeType":"ElementaryTypeName","src":"4894:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4893:9:9"},"scope":2967,"src":"4817:250:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2880,"nodeType":"Block","src":"5382:1372:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2827,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"6278:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6270:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2825,"name":"uint256","nodeType":"ElementaryTypeName","src":"6270:7:9","typeDescriptions":{}}},"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6270:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":2829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6283:66:9","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6270:79:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2841,"nodeType":"IfStatement","src":"6266:164:9","trueBody":{"id":2840,"nodeType":"Block","src":"6351:79:9","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":2833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6381:1:9","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":2832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6373:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2831,"name":"address","nodeType":"ElementaryTypeName","src":"6373:7:9","typeDescriptions":{}}},"id":2834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6373:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2835,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"6385:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6398:17:9","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":2626,"src":"6385:30:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},{"id":2837,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"6417:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2838,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6372:47:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2824,"id":2839,"nodeType":"Return","src":"6365:54:9"}]}},{"assignments":[2843],"declarations":[{"constant":false,"id":2843,"mutability":"mutable","name":"signer","nameLocation":"6532:6:9","nodeType":"VariableDeclaration","scope":2880,"src":"6524:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2842,"name":"address","nodeType":"ElementaryTypeName","src":"6524:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2850,"initialValue":{"arguments":[{"id":2845,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"6551:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2846,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"6557:1:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2847,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"6560:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2848,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"6563:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2844,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6541:9:9","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6541:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6524:41:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2851,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"6579:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6597:1:9","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":2853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6589:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2852,"name":"address","nodeType":"ElementaryTypeName","src":"6589:7:9","typeDescriptions":{}}},"id":2855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6589:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6579:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2870,"nodeType":"IfStatement","src":"6575:113:9","trueBody":{"id":2869,"nodeType":"Block","src":"6601:87:9","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":2859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6631:1:9","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":2858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6623:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2857,"name":"address","nodeType":"ElementaryTypeName","src":"6623:7:9","typeDescriptions":{}}},"id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6623:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2861,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"6635:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6648:16:9","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":2624,"src":"6635:29:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":2865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6674:1:9","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":2864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6666:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2863,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6666:7:9","typeDescriptions":{}}},"id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6666:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2867,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6622:55:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2824,"id":2868,"nodeType":"Return","src":"6615:62:9"}]}},{"expression":{"components":[{"id":2871,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"6706:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2872,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"6714:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6727:7:9","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":2623,"src":"6714:20:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":2876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6744:1:9","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":2875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6736:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6736:7:9","typeDescriptions":{}}},"id":2877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6736:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2878,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6705:42:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2824,"id":2879,"nodeType":"Return","src":"6698:49:9"}]},"documentation":{"id":2807,"nodeType":"StructuredDocumentation","src":"5073:125:9","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":2881,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5212:10:9","nodeType":"FunctionDefinition","parameters":{"id":2816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2809,"mutability":"mutable","name":"hash","nameLocation":"5240:4:9","nodeType":"VariableDeclaration","scope":2881,"src":"5232:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5232:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2811,"mutability":"mutable","name":"v","nameLocation":"5260:1:9","nodeType":"VariableDeclaration","scope":2881,"src":"5254:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2810,"name":"uint8","nodeType":"ElementaryTypeName","src":"5254:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2813,"mutability":"mutable","name":"r","nameLocation":"5279:1:9","nodeType":"VariableDeclaration","scope":2881,"src":"5271:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2812,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5271:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2815,"mutability":"mutable","name":"s","nameLocation":"5298:1:9","nodeType":"VariableDeclaration","scope":2881,"src":"5290:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2814,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5290:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5222:83:9"},"returnParameters":{"id":2824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2818,"mutability":"mutable","name":"recovered","nameLocation":"5337:9:9","nodeType":"VariableDeclaration","scope":2881,"src":"5329:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2817,"name":"address","nodeType":"ElementaryTypeName","src":"5329:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2821,"mutability":"mutable","name":"err","nameLocation":"5361:3:9","nodeType":"VariableDeclaration","scope":2881,"src":"5348:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2820,"nodeType":"UserDefinedTypeName","pathNode":{"id":2819,"name":"RecoverError","nameLocations":["5348:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":2627,"src":"5348:12:9"},"referencedDeclaration":2627,"src":"5348:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2823,"mutability":"mutable","name":"errArg","nameLocation":"5374:6:9","nodeType":"VariableDeclaration","scope":2881,"src":"5366:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5366:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5328:53:9"},"scope":2967,"src":"5203:1551:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2916,"nodeType":"Block","src":"6981:166:9","statements":[{"assignments":[2896,2899,2901],"declarations":[{"constant":false,"id":2896,"mutability":"mutable","name":"recovered","nameLocation":"7000:9:9","nodeType":"VariableDeclaration","scope":2916,"src":"6992:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2895,"name":"address","nodeType":"ElementaryTypeName","src":"6992:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2899,"mutability":"mutable","name":"error","nameLocation":"7024:5:9","nodeType":"VariableDeclaration","scope":2916,"src":"7011:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2898,"nodeType":"UserDefinedTypeName","pathNode":{"id":2897,"name":"RecoverError","nameLocations":["7011:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":2627,"src":"7011:12:9"},"referencedDeclaration":2627,"src":"7011:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2901,"mutability":"mutable","name":"errorArg","nameLocation":"7039:8:9","nodeType":"VariableDeclaration","scope":2916,"src":"7031:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7031:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2908,"initialValue":{"arguments":[{"id":2903,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"7062:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2904,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2886,"src":"7068:1:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2905,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"7071:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2906,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"7074:1:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2902,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2693,2773,2881],"referencedDeclaration":2881,"src":"7051:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7051:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2627_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6991:85:9"},{"expression":{"arguments":[{"id":2910,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"7098:5:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},{"id":2911,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2901,"src":"7105:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2909,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"7086:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2627_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":2912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7086:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2913,"nodeType":"ExpressionStatement","src":"7086:28:9"},{"expression":{"id":2914,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"7131:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2894,"id":2915,"nodeType":"Return","src":"7124:16:9"}]},"documentation":{"id":2882,"nodeType":"StructuredDocumentation","src":"6760:122:9","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":2917,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6896:7:9","nodeType":"FunctionDefinition","parameters":{"id":2891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2884,"mutability":"mutable","name":"hash","nameLocation":"6912:4:9","nodeType":"VariableDeclaration","scope":2917,"src":"6904:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6904:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2886,"mutability":"mutable","name":"v","nameLocation":"6924:1:9","nodeType":"VariableDeclaration","scope":2917,"src":"6918:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2885,"name":"uint8","nodeType":"ElementaryTypeName","src":"6918:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2888,"mutability":"mutable","name":"r","nameLocation":"6935:1:9","nodeType":"VariableDeclaration","scope":2917,"src":"6927:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6927:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2890,"mutability":"mutable","name":"s","nameLocation":"6946:1:9","nodeType":"VariableDeclaration","scope":2917,"src":"6938:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2889,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6938:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6903:45:9"},"returnParameters":{"id":2894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2917,"src":"6972:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2892,"name":"address","nodeType":"ElementaryTypeName","src":"6972:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6971:9:9"},"scope":2967,"src":"6887:260:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2965,"nodeType":"Block","src":"7352:460:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2926,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"7366:5:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2927,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"7375:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7388:7:9","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":2623,"src":"7375:20:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"src":"7366:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2932,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"7462:5:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2933,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"7471:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7484:16:9","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":2624,"src":"7471:29:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"src":"7462:38:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2940,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"7567:5:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2941,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"7576:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7589:22:9","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"7576:35:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"src":"7567:44:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2952,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"7701:5:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2953,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"7710:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2627_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7723:17:9","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":2626,"src":"7710:30:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"src":"7701:39:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2961,"nodeType":"IfStatement","src":"7697:109:9","trueBody":{"id":2960,"nodeType":"Block","src":"7742:64:9","statements":[{"errorCall":{"arguments":[{"id":2957,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2923,"src":"7786:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2956,"name":"ECDSAInvalidSignatureS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"7763:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":2958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7763:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2959,"nodeType":"RevertStatement","src":"7756:39:9"}]}},"id":2962,"nodeType":"IfStatement","src":"7563:243:9","trueBody":{"id":2951,"nodeType":"Block","src":"7613:78:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2947,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2923,"src":"7670:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7662:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"7662:7:9","typeDescriptions":{}}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7662:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2944,"name":"ECDSAInvalidSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"7634:27:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7634:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2950,"nodeType":"RevertStatement","src":"7627:53:9"}]}},"id":2963,"nodeType":"IfStatement","src":"7458:348:9","trueBody":{"id":2939,"nodeType":"Block","src":"7502:55:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2936,"name":"ECDSAInvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"7523:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7523:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2938,"nodeType":"RevertStatement","src":"7516:30:9"}]}},"id":2964,"nodeType":"IfStatement","src":"7362:444:9","trueBody":{"id":2931,"nodeType":"Block","src":"7397:55:9","statements":[{"functionReturnParameters":2925,"id":2930,"nodeType":"Return","src":"7411:7:9"}]}}]},"documentation":{"id":2918,"nodeType":"StructuredDocumentation","src":"7153:122:9","text":" @dev Optionally reverts with the corresponding custom error according to the `error` argument provided."},"id":2966,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"7289:11:9","nodeType":"FunctionDefinition","parameters":{"id":2924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2921,"mutability":"mutable","name":"error","nameLocation":"7314:5:9","nodeType":"VariableDeclaration","scope":2966,"src":"7301:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2920,"nodeType":"UserDefinedTypeName","pathNode":{"id":2919,"name":"RecoverError","nameLocations":["7301:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":2627,"src":"7301:12:9"},"referencedDeclaration":2627,"src":"7301:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2627","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2923,"mutability":"mutable","name":"errorArg","nameLocation":"7329:8:9","nodeType":"VariableDeclaration","scope":2966,"src":"7321:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2922,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7321:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7300:38:9"},"returnParameters":{"id":2925,"nodeType":"ParameterList","parameters":[],"src":"7352:0:9"},"scope":2967,"src":"7280:532:9","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2968,"src":"344:7470:9","usedErrors":[2630,2635,2640],"usedEvents":[]}],"src":"112:7703:9"},"id":9},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","exportedSymbols":{"MessageHashUtils":[3053],"Strings":[2619]},"id":3054,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2969,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:10"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../Strings.sol","id":2971,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3054,"sourceUnit":2620,"src":"149:39:10","symbolAliases":[{"foreign":{"id":2970,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2619,"src":"157:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MessageHashUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":2972,"nodeType":"StructuredDocumentation","src":"190:330:10","text":" @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n The library provides methods for generating a hash of a message that conforms to the\n https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n specifications."},"fullyImplemented":true,"id":3053,"linearizedBaseContracts":[3053],"name":"MessageHashUtils","nameLocation":"529:16:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":2981,"nodeType":"Block","src":"1339:341:10","statements":[{"AST":{"nativeSrc":"1374:300:10","nodeType":"YulBlock","src":"1374:300:10","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1395:4:10","nodeType":"YulLiteral","src":"1395:4:10","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nativeSrc":"1401:34:10","nodeType":"YulLiteral","src":"1401:34:10","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nativeSrc":"1388:6:10","nodeType":"YulIdentifier","src":"1388:6:10"},"nativeSrc":"1388:48:10","nodeType":"YulFunctionCall","src":"1388:48:10"},"nativeSrc":"1388:48:10","nodeType":"YulExpressionStatement","src":"1388:48:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1497:4:10","nodeType":"YulLiteral","src":"1497:4:10","type":"","value":"0x1c"},{"name":"messageHash","nativeSrc":"1503:11:10","nodeType":"YulIdentifier","src":"1503:11:10"}],"functionName":{"name":"mstore","nativeSrc":"1490:6:10","nodeType":"YulIdentifier","src":"1490:6:10"},"nativeSrc":"1490:25:10","nodeType":"YulFunctionCall","src":"1490:25:10"},"nativeSrc":"1490:25:10","nodeType":"YulExpressionStatement","src":"1490:25:10"},{"nativeSrc":"1569:31:10","nodeType":"YulAssignment","src":"1569:31:10","value":{"arguments":[{"kind":"number","nativeSrc":"1589:4:10","nodeType":"YulLiteral","src":"1589:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1595:4:10","nodeType":"YulLiteral","src":"1595:4:10","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nativeSrc":"1579:9:10","nodeType":"YulIdentifier","src":"1579:9:10"},"nativeSrc":"1579:21:10","nodeType":"YulFunctionCall","src":"1579:21:10"},"variableNames":[{"name":"digest","nativeSrc":"1569:6:10","nodeType":"YulIdentifier","src":"1569:6:10"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2978,"isOffset":false,"isSlot":false,"src":"1569:6:10","valueSize":1},{"declaration":2975,"isOffset":false,"isSlot":false,"src":"1503:11:10","valueSize":1}],"flags":["memory-safe"],"id":2980,"nodeType":"InlineAssembly","src":"1349:325:10"}]},"documentation":{"id":2973,"nodeType":"StructuredDocumentation","src":"552:690:10","text":" @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing a bytes32 `messageHash` with\n `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n keccak256, although any bytes32 value can be safely used because the final digest will\n be re-hashed.\n See {ECDSA-recover}."},"id":2982,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"1256:22:10","nodeType":"FunctionDefinition","parameters":{"id":2976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2975,"mutability":"mutable","name":"messageHash","nameLocation":"1287:11:10","nodeType":"VariableDeclaration","scope":2982,"src":"1279:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2974,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1279:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1278:21:10"},"returnParameters":{"id":2979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2978,"mutability":"mutable","name":"digest","nameLocation":"1331:6:10","nodeType":"VariableDeclaration","scope":2982,"src":"1323:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2977,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1323:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1322:16:10"},"scope":3053,"src":"1247:433:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3007,"nodeType":"Block","src":"2257:143:10","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":2994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2309:32:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"arguments":[{"expression":{"id":2999,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"2366:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2374:6:10","memberName":"length","nodeType":"MemberAccess","src":"2366:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2997,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2619,"src":"2349:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$2619_$","typeString":"type(library Strings)"}},"id":2998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2357:8:10","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1331,"src":"2349:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2349:32:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2343:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2995,"name":"bytes","nodeType":"ElementaryTypeName","src":"2343:5:10","typeDescriptions":{}}},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2343:39:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3003,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"2384:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2296:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2991,"name":"bytes","nodeType":"ElementaryTypeName","src":"2296:5:10","typeDescriptions":{}}},"id":2993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2302:6:10","memberName":"concat","nodeType":"MemberAccess","src":"2296:12:10","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2296:96:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2990,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2286:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2286:107:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2989,"id":3006,"nodeType":"Return","src":"2267:126:10"}]},"documentation":{"id":2983,"nodeType":"StructuredDocumentation","src":"1686:480:10","text":" @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing an arbitrary `message` with\n `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n See {ECDSA-recover}."},"id":3008,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"2180:22:10","nodeType":"FunctionDefinition","parameters":{"id":2986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2985,"mutability":"mutable","name":"message","nameLocation":"2216:7:10","nodeType":"VariableDeclaration","scope":3008,"src":"2203:20:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2984,"name":"bytes","nodeType":"ElementaryTypeName","src":"2203:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2202:22:10"},"returnParameters":{"id":2989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3008,"src":"2248:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2987,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2248:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2247:9:10"},"scope":3053,"src":"2171:229:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3027,"nodeType":"Block","src":"2854:80:10","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":3021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2898:10:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":3022,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3011,"src":"2910:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3023,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"2921:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3019,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2881:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2885:12:10","memberName":"encodePacked","nodeType":"MemberAccess","src":"2881:16:10","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2881:45:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3018,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2871:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2871:56:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3017,"id":3026,"nodeType":"Return","src":"2864:63:10"}]},"documentation":{"id":3009,"nodeType":"StructuredDocumentation","src":"2406:332:10","text":" @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x00` (data with intended validator).\n The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n `validator` address. Then hashing the result.\n See {ECDSA-recover}."},"id":3028,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"2752:31:10","nodeType":"FunctionDefinition","parameters":{"id":3014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3011,"mutability":"mutable","name":"validator","nameLocation":"2792:9:10","nodeType":"VariableDeclaration","scope":3028,"src":"2784:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3010,"name":"address","nodeType":"ElementaryTypeName","src":"2784:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3013,"mutability":"mutable","name":"data","nameLocation":"2816:4:10","nodeType":"VariableDeclaration","scope":3028,"src":"2803:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3012,"name":"bytes","nodeType":"ElementaryTypeName","src":"2803:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2783:38:10"},"returnParameters":{"id":3017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3028,"src":"2845:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3015,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2845:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2844:9:10"},"scope":3053,"src":"2743:191:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3039,"nodeType":"Block","src":"3216:216:10","statements":[{"AST":{"nativeSrc":"3251:175:10","nodeType":"YulBlock","src":"3251:175:10","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3272:4:10","nodeType":"YulLiteral","src":"3272:4:10","type":"","value":"0x00"},{"hexValue":"1900","kind":"string","nativeSrc":"3278:10:10","nodeType":"YulLiteral","src":"3278:10:10","type":"","value":"\u0019\u0000"}],"functionName":{"name":"mstore","nativeSrc":"3265:6:10","nodeType":"YulIdentifier","src":"3265:6:10"},"nativeSrc":"3265:24:10","nodeType":"YulFunctionCall","src":"3265:24:10"},"nativeSrc":"3265:24:10","nodeType":"YulExpressionStatement","src":"3265:24:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3309:4:10","nodeType":"YulLiteral","src":"3309:4:10","type":"","value":"0x02"},{"arguments":[{"kind":"number","nativeSrc":"3319:2:10","nodeType":"YulLiteral","src":"3319:2:10","type":"","value":"96"},{"name":"validator","nativeSrc":"3323:9:10","nodeType":"YulIdentifier","src":"3323:9:10"}],"functionName":{"name":"shl","nativeSrc":"3315:3:10","nodeType":"YulIdentifier","src":"3315:3:10"},"nativeSrc":"3315:18:10","nodeType":"YulFunctionCall","src":"3315:18:10"}],"functionName":{"name":"mstore","nativeSrc":"3302:6:10","nodeType":"YulIdentifier","src":"3302:6:10"},"nativeSrc":"3302:32:10","nodeType":"YulFunctionCall","src":"3302:32:10"},"nativeSrc":"3302:32:10","nodeType":"YulExpressionStatement","src":"3302:32:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3354:4:10","nodeType":"YulLiteral","src":"3354:4:10","type":"","value":"0x16"},{"name":"messageHash","nativeSrc":"3360:11:10","nodeType":"YulIdentifier","src":"3360:11:10"}],"functionName":{"name":"mstore","nativeSrc":"3347:6:10","nodeType":"YulIdentifier","src":"3347:6:10"},"nativeSrc":"3347:25:10","nodeType":"YulFunctionCall","src":"3347:25:10"},"nativeSrc":"3347:25:10","nodeType":"YulExpressionStatement","src":"3347:25:10"},{"nativeSrc":"3385:31:10","nodeType":"YulAssignment","src":"3385:31:10","value":{"arguments":[{"kind":"number","nativeSrc":"3405:4:10","nodeType":"YulLiteral","src":"3405:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3411:4:10","nodeType":"YulLiteral","src":"3411:4:10","type":"","value":"0x36"}],"functionName":{"name":"keccak256","nativeSrc":"3395:9:10","nodeType":"YulIdentifier","src":"3395:9:10"},"nativeSrc":"3395:21:10","nodeType":"YulFunctionCall","src":"3395:21:10"},"variableNames":[{"name":"digest","nativeSrc":"3385:6:10","nodeType":"YulIdentifier","src":"3385:6:10"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3036,"isOffset":false,"isSlot":false,"src":"3385:6:10","valueSize":1},{"declaration":3033,"isOffset":false,"isSlot":false,"src":"3360:11:10","valueSize":1},{"declaration":3031,"isOffset":false,"isSlot":false,"src":"3323:9:10","valueSize":1}],"flags":["memory-safe"],"id":3038,"nodeType":"InlineAssembly","src":"3226:200:10"}]},"documentation":{"id":3029,"nodeType":"StructuredDocumentation","src":"2940:129:10","text":" @dev Variant of {toDataWithIntendedValidatorHash-address-bytes} optimized for cases where `data` is a bytes32."},"id":3040,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"3083:31:10","nodeType":"FunctionDefinition","parameters":{"id":3034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3031,"mutability":"mutable","name":"validator","nameLocation":"3132:9:10","nodeType":"VariableDeclaration","scope":3040,"src":"3124:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3030,"name":"address","nodeType":"ElementaryTypeName","src":"3124:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3033,"mutability":"mutable","name":"messageHash","nameLocation":"3159:11:10","nodeType":"VariableDeclaration","scope":3040,"src":"3151:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3151:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3114:62:10"},"returnParameters":{"id":3037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3036,"mutability":"mutable","name":"digest","nameLocation":"3208:6:10","nodeType":"VariableDeclaration","scope":3040,"src":"3200:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3200:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3199:16:10"},"scope":3053,"src":"3074:358:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3051,"nodeType":"Block","src":"3983:265:10","statements":[{"AST":{"nativeSrc":"4018:224:10","nodeType":"YulBlock","src":"4018:224:10","statements":[{"nativeSrc":"4032:22:10","nodeType":"YulVariableDeclaration","src":"4032:22:10","value":{"arguments":[{"kind":"number","nativeSrc":"4049:4:10","nodeType":"YulLiteral","src":"4049:4:10","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"4043:5:10","nodeType":"YulIdentifier","src":"4043:5:10"},"nativeSrc":"4043:11:10","nodeType":"YulFunctionCall","src":"4043:11:10"},"variables":[{"name":"ptr","nativeSrc":"4036:3:10","nodeType":"YulTypedName","src":"4036:3:10","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"4074:3:10","nodeType":"YulIdentifier","src":"4074:3:10"},{"hexValue":"1901","kind":"string","nativeSrc":"4079:10:10","nodeType":"YulLiteral","src":"4079:10:10","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nativeSrc":"4067:6:10","nodeType":"YulIdentifier","src":"4067:6:10"},"nativeSrc":"4067:23:10","nodeType":"YulFunctionCall","src":"4067:23:10"},"nativeSrc":"4067:23:10","nodeType":"YulExpressionStatement","src":"4067:23:10"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"4114:3:10","nodeType":"YulIdentifier","src":"4114:3:10"},{"kind":"number","nativeSrc":"4119:4:10","nodeType":"YulLiteral","src":"4119:4:10","type":"","value":"0x02"}],"functionName":{"name":"add","nativeSrc":"4110:3:10","nodeType":"YulIdentifier","src":"4110:3:10"},"nativeSrc":"4110:14:10","nodeType":"YulFunctionCall","src":"4110:14:10"},{"name":"domainSeparator","nativeSrc":"4126:15:10","nodeType":"YulIdentifier","src":"4126:15:10"}],"functionName":{"name":"mstore","nativeSrc":"4103:6:10","nodeType":"YulIdentifier","src":"4103:6:10"},"nativeSrc":"4103:39:10","nodeType":"YulFunctionCall","src":"4103:39:10"},"nativeSrc":"4103:39:10","nodeType":"YulExpressionStatement","src":"4103:39:10"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"4166:3:10","nodeType":"YulIdentifier","src":"4166:3:10"},{"kind":"number","nativeSrc":"4171:4:10","nodeType":"YulLiteral","src":"4171:4:10","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"4162:3:10","nodeType":"YulIdentifier","src":"4162:3:10"},"nativeSrc":"4162:14:10","nodeType":"YulFunctionCall","src":"4162:14:10"},{"name":"structHash","nativeSrc":"4178:10:10","nodeType":"YulIdentifier","src":"4178:10:10"}],"functionName":{"name":"mstore","nativeSrc":"4155:6:10","nodeType":"YulIdentifier","src":"4155:6:10"},"nativeSrc":"4155:34:10","nodeType":"YulFunctionCall","src":"4155:34:10"},"nativeSrc":"4155:34:10","nodeType":"YulExpressionStatement","src":"4155:34:10"},{"nativeSrc":"4202:30:10","nodeType":"YulAssignment","src":"4202:30:10","value":{"arguments":[{"name":"ptr","nativeSrc":"4222:3:10","nodeType":"YulIdentifier","src":"4222:3:10"},{"kind":"number","nativeSrc":"4227:4:10","nodeType":"YulLiteral","src":"4227:4:10","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nativeSrc":"4212:9:10","nodeType":"YulIdentifier","src":"4212:9:10"},"nativeSrc":"4212:20:10","nodeType":"YulFunctionCall","src":"4212:20:10"},"variableNames":[{"name":"digest","nativeSrc":"4202:6:10","nodeType":"YulIdentifier","src":"4202:6:10"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3048,"isOffset":false,"isSlot":false,"src":"4202:6:10","valueSize":1},{"declaration":3043,"isOffset":false,"isSlot":false,"src":"4126:15:10","valueSize":1},{"declaration":3045,"isOffset":false,"isSlot":false,"src":"4178:10:10","valueSize":1}],"flags":["memory-safe"],"id":3050,"nodeType":"InlineAssembly","src":"3993:249:10"}]},"documentation":{"id":3041,"nodeType":"StructuredDocumentation","src":"3438:431:10","text":" @dev Returns the keccak256 digest of an EIP-712 typed data (ERC-191 version `0x01`).\n The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n See {ECDSA-recover}."},"id":3052,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"3883:15:10","nodeType":"FunctionDefinition","parameters":{"id":3046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3043,"mutability":"mutable","name":"domainSeparator","nameLocation":"3907:15:10","nodeType":"VariableDeclaration","scope":3052,"src":"3899:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3042,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3899:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3045,"mutability":"mutable","name":"structHash","nameLocation":"3932:10:10","nodeType":"VariableDeclaration","scope":3052,"src":"3924:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3924:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3898:45:10"},"returnParameters":{"id":3049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3048,"mutability":"mutable","name":"digest","nameLocation":"3975:6:10","nodeType":"VariableDeclaration","scope":3052,"src":"3967:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3047,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3967:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3966:16:10"},"scope":3053,"src":"3874:374:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3054,"src":"521:3729:10","usedErrors":[],"usedEvents":[]}],"src":"123:4128:10"},"id":10},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[3077],"IERC165":[3089]},"id":3078,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3055,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:11"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":3057,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3078,"sourceUnit":3090,"src":"140:38:11","symbolAliases":[{"foreign":{"id":3056,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"148:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3059,"name":"IERC165","nameLocations":["688:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":3089,"src":"688:7:11"},"id":3060,"nodeType":"InheritanceSpecifier","src":"688:7:11"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":3058,"nodeType":"StructuredDocumentation","src":"180:479:11","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":3077,"linearizedBaseContracts":[3077,3089],"name":"ERC165","nameLocation":"678:6:11","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[3088],"body":{"id":3075,"nodeType":"Block","src":"812:64:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3068,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"829:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3070,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"849:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3089_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$3089_$","typeString":"type(contract IERC165)"}],"id":3069,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"844:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"844:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$3089","typeString":"type(contract IERC165)"}},"id":3072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"858:11:11","memberName":"interfaceId","nodeType":"MemberAccess","src":"844:25:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"829:40:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3067,"id":3074,"nodeType":"Return","src":"822:47:11"}]},"documentation":{"id":3061,"nodeType":"StructuredDocumentation","src":"702:23:11","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":3076,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"739:17:11","nodeType":"FunctionDefinition","parameters":{"id":3064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3063,"mutability":"mutable","name":"interfaceId","nameLocation":"764:11:11","nodeType":"VariableDeclaration","scope":3076,"src":"757:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3062,"name":"bytes4","nodeType":"ElementaryTypeName","src":"757:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"756:20:11"},"returnParameters":{"id":3067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3076,"src":"806:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3065,"name":"bool","nodeType":"ElementaryTypeName","src":"806:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"805:6:11"},"scope":3077,"src":"730:146:11","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":3078,"src":"660:218:11","usedErrors":[],"usedEvents":[]}],"src":"114:765:11"},"id":11},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[3089]},"id":3090,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3079,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"115:25:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":3080,"nodeType":"StructuredDocumentation","src":"142:280:12","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":3089,"linearizedBaseContracts":[3089],"name":"IERC165","nameLocation":"433:7:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3081,"nodeType":"StructuredDocumentation","src":"447:340:12","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":3088,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:12","nodeType":"FunctionDefinition","parameters":{"id":3084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3083,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:12","nodeType":"VariableDeclaration","scope":3088,"src":"819:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3082,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:12"},"returnParameters":{"id":3087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3088,"src":"862:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3085,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:12"},"scope":3089,"src":"792:76:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3090,"src":"423:447:12","usedErrors":[],"usedEvents":[]}],"src":"115:756:12"},"id":12},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[4710],"Panic":[1217],"SafeCast":[6475]},"id":4711,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3091,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:13"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":3093,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4711,"sourceUnit":1218,"src":"129:35:13","symbolAliases":[{"foreign":{"id":3092,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"137:5:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":3095,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4711,"sourceUnit":6476,"src":"165:40:13","symbolAliases":[{"foreign":{"id":3094,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"173:8:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":3096,"nodeType":"StructuredDocumentation","src":"207:73:13","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":4710,"linearizedBaseContracts":[4710],"name":"Math","nameLocation":"289:4:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":3101,"members":[{"id":3097,"name":"Floor","nameLocation":"324:5:13","nodeType":"EnumValue","src":"324:5:13"},{"id":3098,"name":"Ceil","nameLocation":"367:4:13","nodeType":"EnumValue","src":"367:4:13"},{"id":3099,"name":"Trunc","nameLocation":"409:5:13","nodeType":"EnumValue","src":"409:5:13"},{"id":3100,"name":"Expand","nameLocation":"439:6:13","nodeType":"EnumValue","src":"439:6:13"}],"name":"Rounding","nameLocation":"305:8:13","nodeType":"EnumDefinition","src":"300:169:13"},{"body":{"id":3114,"nodeType":"Block","src":"731:112:13","statements":[{"AST":{"nativeSrc":"766:71:13","nodeType":"YulBlock","src":"766:71:13","statements":[{"nativeSrc":"780:16:13","nodeType":"YulAssignment","src":"780:16:13","value":{"arguments":[{"name":"a","nativeSrc":"791:1:13","nodeType":"YulIdentifier","src":"791:1:13"},{"name":"b","nativeSrc":"794:1:13","nodeType":"YulIdentifier","src":"794:1:13"}],"functionName":{"name":"add","nativeSrc":"787:3:13","nodeType":"YulIdentifier","src":"787:3:13"},"nativeSrc":"787:9:13","nodeType":"YulFunctionCall","src":"787:9:13"},"variableNames":[{"name":"low","nativeSrc":"780:3:13","nodeType":"YulIdentifier","src":"780:3:13"}]},{"nativeSrc":"809:18:13","nodeType":"YulAssignment","src":"809:18:13","value":{"arguments":[{"name":"low","nativeSrc":"820:3:13","nodeType":"YulIdentifier","src":"820:3:13"},{"name":"a","nativeSrc":"825:1:13","nodeType":"YulIdentifier","src":"825:1:13"}],"functionName":{"name":"lt","nativeSrc":"817:2:13","nodeType":"YulIdentifier","src":"817:2:13"},"nativeSrc":"817:10:13","nodeType":"YulFunctionCall","src":"817:10:13"},"variableNames":[{"name":"high","nativeSrc":"809:4:13","nodeType":"YulIdentifier","src":"809:4:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3104,"isOffset":false,"isSlot":false,"src":"791:1:13","valueSize":1},{"declaration":3104,"isOffset":false,"isSlot":false,"src":"825:1:13","valueSize":1},{"declaration":3106,"isOffset":false,"isSlot":false,"src":"794:1:13","valueSize":1},{"declaration":3109,"isOffset":false,"isSlot":false,"src":"809:4:13","valueSize":1},{"declaration":3111,"isOffset":false,"isSlot":false,"src":"780:3:13","valueSize":1},{"declaration":3111,"isOffset":false,"isSlot":false,"src":"820:3:13","valueSize":1}],"flags":["memory-safe"],"id":3113,"nodeType":"InlineAssembly","src":"741:96:13"}]},"documentation":{"id":3102,"nodeType":"StructuredDocumentation","src":"475:163:13","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":3115,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:13","nodeType":"FunctionDefinition","parameters":{"id":3107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3104,"mutability":"mutable","name":"a","nameLocation":"667:1:13","nodeType":"VariableDeclaration","scope":3115,"src":"659:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3103,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3106,"mutability":"mutable","name":"b","nameLocation":"678:1:13","nodeType":"VariableDeclaration","scope":3115,"src":"670:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3105,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:13"},"returnParameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3109,"mutability":"mutable","name":"high","nameLocation":"712:4:13","nodeType":"VariableDeclaration","scope":3115,"src":"704:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3108,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3111,"mutability":"mutable","name":"low","nameLocation":"726:3:13","nodeType":"VariableDeclaration","scope":3115,"src":"718:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3110,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:13"},"scope":4710,"src":"643:200:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3128,"nodeType":"Block","src":"1115:462:13","statements":[{"AST":{"nativeSrc":"1437:134:13","nodeType":"YulBlock","src":"1437:134:13","statements":[{"nativeSrc":"1451:30:13","nodeType":"YulVariableDeclaration","src":"1451:30:13","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:13","nodeType":"YulIdentifier","src":"1468:1:13"},{"name":"b","nativeSrc":"1471:1:13","nodeType":"YulIdentifier","src":"1471:1:13"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:13","nodeType":"YulLiteral","src":"1478:1:13","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:13","nodeType":"YulIdentifier","src":"1474:3:13"},"nativeSrc":"1474:6:13","nodeType":"YulFunctionCall","src":"1474:6:13"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:13","nodeType":"YulIdentifier","src":"1461:6:13"},"nativeSrc":"1461:20:13","nodeType":"YulFunctionCall","src":"1461:20:13"},"variables":[{"name":"mm","nativeSrc":"1455:2:13","nodeType":"YulTypedName","src":"1455:2:13","type":""}]},{"nativeSrc":"1494:16:13","nodeType":"YulAssignment","src":"1494:16:13","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:13","nodeType":"YulIdentifier","src":"1505:1:13"},{"name":"b","nativeSrc":"1508:1:13","nodeType":"YulIdentifier","src":"1508:1:13"}],"functionName":{"name":"mul","nativeSrc":"1501:3:13","nodeType":"YulIdentifier","src":"1501:3:13"},"nativeSrc":"1501:9:13","nodeType":"YulFunctionCall","src":"1501:9:13"},"variableNames":[{"name":"low","nativeSrc":"1494:3:13","nodeType":"YulIdentifier","src":"1494:3:13"}]},{"nativeSrc":"1523:38:13","nodeType":"YulAssignment","src":"1523:38:13","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:13","nodeType":"YulIdentifier","src":"1539:2:13"},{"name":"low","nativeSrc":"1543:3:13","nodeType":"YulIdentifier","src":"1543:3:13"}],"functionName":{"name":"sub","nativeSrc":"1535:3:13","nodeType":"YulIdentifier","src":"1535:3:13"},"nativeSrc":"1535:12:13","nodeType":"YulFunctionCall","src":"1535:12:13"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:13","nodeType":"YulIdentifier","src":"1552:2:13"},{"name":"low","nativeSrc":"1556:3:13","nodeType":"YulIdentifier","src":"1556:3:13"}],"functionName":{"name":"lt","nativeSrc":"1549:2:13","nodeType":"YulIdentifier","src":"1549:2:13"},"nativeSrc":"1549:11:13","nodeType":"YulFunctionCall","src":"1549:11:13"}],"functionName":{"name":"sub","nativeSrc":"1531:3:13","nodeType":"YulIdentifier","src":"1531:3:13"},"nativeSrc":"1531:30:13","nodeType":"YulFunctionCall","src":"1531:30:13"},"variableNames":[{"name":"high","nativeSrc":"1523:4:13","nodeType":"YulIdentifier","src":"1523:4:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3118,"isOffset":false,"isSlot":false,"src":"1468:1:13","valueSize":1},{"declaration":3118,"isOffset":false,"isSlot":false,"src":"1505:1:13","valueSize":1},{"declaration":3120,"isOffset":false,"isSlot":false,"src":"1471:1:13","valueSize":1},{"declaration":3120,"isOffset":false,"isSlot":false,"src":"1508:1:13","valueSize":1},{"declaration":3123,"isOffset":false,"isSlot":false,"src":"1523:4:13","valueSize":1},{"declaration":3125,"isOffset":false,"isSlot":false,"src":"1494:3:13","valueSize":1},{"declaration":3125,"isOffset":false,"isSlot":false,"src":"1543:3:13","valueSize":1},{"declaration":3125,"isOffset":false,"isSlot":false,"src":"1556:3:13","valueSize":1}],"flags":["memory-safe"],"id":3127,"nodeType":"InlineAssembly","src":"1412:159:13"}]},"documentation":{"id":3116,"nodeType":"StructuredDocumentation","src":"849:173:13","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":3129,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:13","nodeType":"FunctionDefinition","parameters":{"id":3121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3118,"mutability":"mutable","name":"a","nameLocation":"1051:1:13","nodeType":"VariableDeclaration","scope":3129,"src":"1043:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3117,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3120,"mutability":"mutable","name":"b","nameLocation":"1062:1:13","nodeType":"VariableDeclaration","scope":3129,"src":"1054:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3119,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:13"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3123,"mutability":"mutable","name":"high","nameLocation":"1096:4:13","nodeType":"VariableDeclaration","scope":3129,"src":"1088:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3122,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3125,"mutability":"mutable","name":"low","nameLocation":"1110:3:13","nodeType":"VariableDeclaration","scope":3129,"src":"1102:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3124,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:13"},"scope":4710,"src":"1027:550:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3163,"nodeType":"Block","src":"1784:149:13","statements":[{"id":3162,"nodeType":"UncheckedBlock","src":"1794:133:13","statements":[{"assignments":[3142],"declarations":[{"constant":false,"id":3142,"mutability":"mutable","name":"c","nameLocation":"1826:1:13","nodeType":"VariableDeclaration","scope":3162,"src":"1818:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3141,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3146,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3143,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"1830:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3144,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3134,"src":"1834:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:13"},{"expression":{"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3147,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"1849:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3148,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"1859:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3149,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"1864:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3152,"nodeType":"ExpressionStatement","src":"1849:16:13"},{"expression":{"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3153,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"1879:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3154,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"1888:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3157,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"1908:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3155,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"1892:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":3156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"1892:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3161,"nodeType":"ExpressionStatement","src":"1879:37:13"}]}]},"documentation":{"id":3130,"nodeType":"StructuredDocumentation","src":"1583:105:13","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":3164,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:13","nodeType":"FunctionDefinition","parameters":{"id":3135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3132,"mutability":"mutable","name":"a","nameLocation":"1717:1:13","nodeType":"VariableDeclaration","scope":3164,"src":"1709:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3131,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3134,"mutability":"mutable","name":"b","nameLocation":"1728:1:13","nodeType":"VariableDeclaration","scope":3164,"src":"1720:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:13"},"returnParameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3137,"mutability":"mutable","name":"success","nameLocation":"1759:7:13","nodeType":"VariableDeclaration","scope":3164,"src":"1754:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3136,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3139,"mutability":"mutable","name":"result","nameLocation":"1776:6:13","nodeType":"VariableDeclaration","scope":3164,"src":"1768:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:13"},"scope":4710,"src":"1693:240:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3198,"nodeType":"Block","src":"2143:149:13","statements":[{"id":3197,"nodeType":"UncheckedBlock","src":"2153:133:13","statements":[{"assignments":[3177],"declarations":[{"constant":false,"id":3177,"mutability":"mutable","name":"c","nameLocation":"2185:1:13","nodeType":"VariableDeclaration","scope":3197,"src":"2177:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3176,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3181,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3178,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3167,"src":"2189:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3179,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3169,"src":"2193:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:13"},{"expression":{"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3182,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"2208:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3183,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3177,"src":"2218:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3184,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3167,"src":"2223:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3187,"nodeType":"ExpressionStatement","src":"2208:16:13"},{"expression":{"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3188,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3174,"src":"2238:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3189,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3177,"src":"2247:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3192,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"2267:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3190,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"2251:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"2251:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3196,"nodeType":"ExpressionStatement","src":"2238:37:13"}]}]},"documentation":{"id":3165,"nodeType":"StructuredDocumentation","src":"1939:108:13","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":3199,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:13","nodeType":"FunctionDefinition","parameters":{"id":3170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3167,"mutability":"mutable","name":"a","nameLocation":"2076:1:13","nodeType":"VariableDeclaration","scope":3199,"src":"2068:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3166,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3169,"mutability":"mutable","name":"b","nameLocation":"2087:1:13","nodeType":"VariableDeclaration","scope":3199,"src":"2079:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3168,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:13"},"returnParameters":{"id":3175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3172,"mutability":"mutable","name":"success","nameLocation":"2118:7:13","nodeType":"VariableDeclaration","scope":3199,"src":"2113:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3171,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3174,"mutability":"mutable","name":"result","nameLocation":"2135:6:13","nodeType":"VariableDeclaration","scope":3199,"src":"2127:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3173,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:13"},"scope":4710,"src":"2052:240:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3228,"nodeType":"Block","src":"2505:391:13","statements":[{"id":3227,"nodeType":"UncheckedBlock","src":"2515:375:13","statements":[{"assignments":[3212],"declarations":[{"constant":false,"id":3212,"mutability":"mutable","name":"c","nameLocation":"2547:1:13","nodeType":"VariableDeclaration","scope":3227,"src":"2539:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3211,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3216,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3213,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"2551:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3214,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"2555:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:13"},{"AST":{"nativeSrc":"2595:188:13","nodeType":"YulBlock","src":"2595:188:13","statements":[{"nativeSrc":"2727:42:13","nodeType":"YulAssignment","src":"2727:42:13","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:13","nodeType":"YulIdentifier","src":"2748:1:13"},{"name":"a","nativeSrc":"2751:1:13","nodeType":"YulIdentifier","src":"2751:1:13"}],"functionName":{"name":"div","nativeSrc":"2744:3:13","nodeType":"YulIdentifier","src":"2744:3:13"},"nativeSrc":"2744:9:13","nodeType":"YulFunctionCall","src":"2744:9:13"},{"name":"b","nativeSrc":"2755:1:13","nodeType":"YulIdentifier","src":"2755:1:13"}],"functionName":{"name":"eq","nativeSrc":"2741:2:13","nodeType":"YulIdentifier","src":"2741:2:13"},"nativeSrc":"2741:16:13","nodeType":"YulFunctionCall","src":"2741:16:13"},{"arguments":[{"name":"a","nativeSrc":"2766:1:13","nodeType":"YulIdentifier","src":"2766:1:13"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:13","nodeType":"YulIdentifier","src":"2759:6:13"},"nativeSrc":"2759:9:13","nodeType":"YulFunctionCall","src":"2759:9:13"}],"functionName":{"name":"or","nativeSrc":"2738:2:13","nodeType":"YulIdentifier","src":"2738:2:13"},"nativeSrc":"2738:31:13","nodeType":"YulFunctionCall","src":"2738:31:13"},"variableNames":[{"name":"success","nativeSrc":"2727:7:13","nodeType":"YulIdentifier","src":"2727:7:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3202,"isOffset":false,"isSlot":false,"src":"2751:1:13","valueSize":1},{"declaration":3202,"isOffset":false,"isSlot":false,"src":"2766:1:13","valueSize":1},{"declaration":3204,"isOffset":false,"isSlot":false,"src":"2755:1:13","valueSize":1},{"declaration":3212,"isOffset":false,"isSlot":false,"src":"2748:1:13","valueSize":1},{"declaration":3207,"isOffset":false,"isSlot":false,"src":"2727:7:13","valueSize":1}],"flags":["memory-safe"],"id":3217,"nodeType":"InlineAssembly","src":"2570:213:13"},{"expression":{"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3218,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"2842:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3219,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"2851:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3222,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"2871:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3220,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"2855:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"2855:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3226,"nodeType":"ExpressionStatement","src":"2842:37:13"}]}]},"documentation":{"id":3200,"nodeType":"StructuredDocumentation","src":"2298:111:13","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":3229,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:13","nodeType":"FunctionDefinition","parameters":{"id":3205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3202,"mutability":"mutable","name":"a","nameLocation":"2438:1:13","nodeType":"VariableDeclaration","scope":3229,"src":"2430:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3201,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3204,"mutability":"mutable","name":"b","nameLocation":"2449:1:13","nodeType":"VariableDeclaration","scope":3229,"src":"2441:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3203,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:13"},"returnParameters":{"id":3210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3207,"mutability":"mutable","name":"success","nameLocation":"2480:7:13","nodeType":"VariableDeclaration","scope":3229,"src":"2475:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3206,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3209,"mutability":"mutable","name":"result","nameLocation":"2497:6:13","nodeType":"VariableDeclaration","scope":3229,"src":"2489:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3208,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:13"},"scope":4710,"src":"2414:482:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3249,"nodeType":"Block","src":"3111:231:13","statements":[{"id":3248,"nodeType":"UncheckedBlock","src":"3121:215:13","statements":[{"expression":{"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3241,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"3145:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3242,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"3155:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3246,"nodeType":"ExpressionStatement","src":"3145:15:13"},{"AST":{"nativeSrc":"3199:127:13","nodeType":"YulBlock","src":"3199:127:13","statements":[{"nativeSrc":"3293:19:13","nodeType":"YulAssignment","src":"3293:19:13","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:13","nodeType":"YulIdentifier","src":"3307:1:13"},{"name":"b","nativeSrc":"3310:1:13","nodeType":"YulIdentifier","src":"3310:1:13"}],"functionName":{"name":"div","nativeSrc":"3303:3:13","nodeType":"YulIdentifier","src":"3303:3:13"},"nativeSrc":"3303:9:13","nodeType":"YulFunctionCall","src":"3303:9:13"},"variableNames":[{"name":"result","nativeSrc":"3293:6:13","nodeType":"YulIdentifier","src":"3293:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3232,"isOffset":false,"isSlot":false,"src":"3307:1:13","valueSize":1},{"declaration":3234,"isOffset":false,"isSlot":false,"src":"3310:1:13","valueSize":1},{"declaration":3239,"isOffset":false,"isSlot":false,"src":"3293:6:13","valueSize":1}],"flags":["memory-safe"],"id":3247,"nodeType":"InlineAssembly","src":"3174:152:13"}]}]},"documentation":{"id":3230,"nodeType":"StructuredDocumentation","src":"2902:113:13","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":3250,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:13","nodeType":"FunctionDefinition","parameters":{"id":3235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3232,"mutability":"mutable","name":"a","nameLocation":"3044:1:13","nodeType":"VariableDeclaration","scope":3250,"src":"3036:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3231,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3234,"mutability":"mutable","name":"b","nameLocation":"3055:1:13","nodeType":"VariableDeclaration","scope":3250,"src":"3047:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3233,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:13"},"returnParameters":{"id":3240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3237,"mutability":"mutable","name":"success","nameLocation":"3086:7:13","nodeType":"VariableDeclaration","scope":3250,"src":"3081:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3236,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3239,"mutability":"mutable","name":"result","nameLocation":"3103:6:13","nodeType":"VariableDeclaration","scope":3250,"src":"3095:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3238,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:13"},"scope":4710,"src":"3020:322:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3270,"nodeType":"Block","src":"3567:231:13","statements":[{"id":3269,"nodeType":"UncheckedBlock","src":"3577:215:13","statements":[{"expression":{"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3262,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3258,"src":"3601:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3263,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"3611:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3267,"nodeType":"ExpressionStatement","src":"3601:15:13"},{"AST":{"nativeSrc":"3655:127:13","nodeType":"YulBlock","src":"3655:127:13","statements":[{"nativeSrc":"3749:19:13","nodeType":"YulAssignment","src":"3749:19:13","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:13","nodeType":"YulIdentifier","src":"3763:1:13"},{"name":"b","nativeSrc":"3766:1:13","nodeType":"YulIdentifier","src":"3766:1:13"}],"functionName":{"name":"mod","nativeSrc":"3759:3:13","nodeType":"YulIdentifier","src":"3759:3:13"},"nativeSrc":"3759:9:13","nodeType":"YulFunctionCall","src":"3759:9:13"},"variableNames":[{"name":"result","nativeSrc":"3749:6:13","nodeType":"YulIdentifier","src":"3749:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3253,"isOffset":false,"isSlot":false,"src":"3763:1:13","valueSize":1},{"declaration":3255,"isOffset":false,"isSlot":false,"src":"3766:1:13","valueSize":1},{"declaration":3260,"isOffset":false,"isSlot":false,"src":"3749:6:13","valueSize":1}],"flags":["memory-safe"],"id":3268,"nodeType":"InlineAssembly","src":"3630:152:13"}]}]},"documentation":{"id":3251,"nodeType":"StructuredDocumentation","src":"3348:123:13","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":3271,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:13","nodeType":"FunctionDefinition","parameters":{"id":3256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3253,"mutability":"mutable","name":"a","nameLocation":"3500:1:13","nodeType":"VariableDeclaration","scope":3271,"src":"3492:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3252,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3255,"mutability":"mutable","name":"b","nameLocation":"3511:1:13","nodeType":"VariableDeclaration","scope":3271,"src":"3503:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3254,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:13"},"returnParameters":{"id":3261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3258,"mutability":"mutable","name":"success","nameLocation":"3542:7:13","nodeType":"VariableDeclaration","scope":3271,"src":"3537:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3257,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3260,"mutability":"mutable","name":"result","nameLocation":"3559:6:13","nodeType":"VariableDeclaration","scope":3271,"src":"3551:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3259,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:13"},"scope":4710,"src":"3476:322:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3300,"nodeType":"Block","src":"3989:122:13","statements":[{"assignments":[3282,3284],"declarations":[{"constant":false,"id":3282,"mutability":"mutable","name":"success","nameLocation":"4005:7:13","nodeType":"VariableDeclaration","scope":3300,"src":"4000:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3281,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3284,"mutability":"mutable","name":"result","nameLocation":"4022:6:13","nodeType":"VariableDeclaration","scope":3300,"src":"4014:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3283,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3289,"initialValue":{"arguments":[{"id":3286,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"4039:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3287,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"4042:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3285,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"4032:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:13"},{"expression":{"arguments":[{"id":3291,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"4069:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3292,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3284,"src":"4078:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3294,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3293,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:13","memberName":"max","nodeType":"MemberAccess","src":"4086:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3290,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"4061:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3280,"id":3299,"nodeType":"Return","src":"4054:50:13"}]},"documentation":{"id":3272,"nodeType":"StructuredDocumentation","src":"3804:103:13","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":3301,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:13","nodeType":"FunctionDefinition","parameters":{"id":3277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3274,"mutability":"mutable","name":"a","nameLocation":"3943:1:13","nodeType":"VariableDeclaration","scope":3301,"src":"3935:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3273,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3276,"mutability":"mutable","name":"b","nameLocation":"3954:1:13","nodeType":"VariableDeclaration","scope":3301,"src":"3946:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3275,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:13"},"returnParameters":{"id":3280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3301,"src":"3980:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3278,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:13"},"scope":4710,"src":"3912:199:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3320,"nodeType":"Block","src":"4294:73:13","statements":[{"assignments":[null,3312],"declarations":[null,{"constant":false,"id":3312,"mutability":"mutable","name":"result","nameLocation":"4315:6:13","nodeType":"VariableDeclaration","scope":3320,"src":"4307:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3311,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3317,"initialValue":{"arguments":[{"id":3314,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"4332:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3315,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"4335:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3313,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"4325:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:13"},{"expression":{"id":3318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3312,"src":"4354:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3310,"id":3319,"nodeType":"Return","src":"4347:13:13"}]},"documentation":{"id":3302,"nodeType":"StructuredDocumentation","src":"4117:95:13","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":3321,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:13","nodeType":"FunctionDefinition","parameters":{"id":3307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3304,"mutability":"mutable","name":"a","nameLocation":"4248:1:13","nodeType":"VariableDeclaration","scope":3321,"src":"4240:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3303,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3306,"mutability":"mutable","name":"b","nameLocation":"4259:1:13","nodeType":"VariableDeclaration","scope":3321,"src":"4251:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3305,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:13"},"returnParameters":{"id":3310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3321,"src":"4285:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:13"},"scope":4710,"src":"4217:150:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3350,"nodeType":"Block","src":"4564:122:13","statements":[{"assignments":[3332,3334],"declarations":[{"constant":false,"id":3332,"mutability":"mutable","name":"success","nameLocation":"4580:7:13","nodeType":"VariableDeclaration","scope":3350,"src":"4575:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3331,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3334,"mutability":"mutable","name":"result","nameLocation":"4597:6:13","nodeType":"VariableDeclaration","scope":3350,"src":"4589:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3333,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3339,"initialValue":{"arguments":[{"id":3336,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3324,"src":"4614:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3337,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3326,"src":"4617:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3335,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3229,"src":"4607:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:13"},{"expression":{"arguments":[{"id":3341,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"4644:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3342,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3334,"src":"4653:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3344,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3343,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:13","memberName":"max","nodeType":"MemberAccess","src":"4661:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3340,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"4636:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3330,"id":3349,"nodeType":"Return","src":"4629:50:13"}]},"documentation":{"id":3322,"nodeType":"StructuredDocumentation","src":"4373:109:13","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":3351,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:13","nodeType":"FunctionDefinition","parameters":{"id":3327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3324,"mutability":"mutable","name":"a","nameLocation":"4518:1:13","nodeType":"VariableDeclaration","scope":3351,"src":"4510:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3323,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3326,"mutability":"mutable","name":"b","nameLocation":"4529:1:13","nodeType":"VariableDeclaration","scope":3351,"src":"4521:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3325,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:13"},"returnParameters":{"id":3330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3329,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3351,"src":"4555:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3328,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:13"},"scope":4710,"src":"4487:199:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3377,"nodeType":"Block","src":"5158:207:13","statements":[{"id":3376,"nodeType":"UncheckedBlock","src":"5168:191:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3363,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"5306:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3364,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3356,"src":"5312:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3365,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"5316:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5312:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5311:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3370,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"5337:9:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3368,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"5321:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":3369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5330:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"5321:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5311:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3373,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5310:38:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5306:42:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3362,"id":3375,"nodeType":"Return","src":"5299:49:13"}]}]},"documentation":{"id":3352,"nodeType":"StructuredDocumentation","src":"4692:374:13","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":3378,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5080:7:13","nodeType":"FunctionDefinition","parameters":{"id":3359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3354,"mutability":"mutable","name":"condition","nameLocation":"5093:9:13","nodeType":"VariableDeclaration","scope":3378,"src":"5088:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3353,"name":"bool","nodeType":"ElementaryTypeName","src":"5088:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3356,"mutability":"mutable","name":"a","nameLocation":"5112:1:13","nodeType":"VariableDeclaration","scope":3378,"src":"5104:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3355,"name":"uint256","nodeType":"ElementaryTypeName","src":"5104:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3358,"mutability":"mutable","name":"b","nameLocation":"5123:1:13","nodeType":"VariableDeclaration","scope":3378,"src":"5115:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3357,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5087:38:13"},"returnParameters":{"id":3362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3378,"src":"5149:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3360,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5148:9:13"},"scope":4710,"src":"5071:294:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3396,"nodeType":"Block","src":"5502:44:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3389,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3381,"src":"5527:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3390,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"5531:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3392,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3381,"src":"5534:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3393,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"5537:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3388,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"5519:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5519:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3387,"id":3395,"nodeType":"Return","src":"5512:27:13"}]},"documentation":{"id":3379,"nodeType":"StructuredDocumentation","src":"5371:59:13","text":" @dev Returns the largest of two numbers."},"id":3397,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5444:3:13","nodeType":"FunctionDefinition","parameters":{"id":3384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3381,"mutability":"mutable","name":"a","nameLocation":"5456:1:13","nodeType":"VariableDeclaration","scope":3397,"src":"5448:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3380,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3383,"mutability":"mutable","name":"b","nameLocation":"5467:1:13","nodeType":"VariableDeclaration","scope":3397,"src":"5459:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3382,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5447:22:13"},"returnParameters":{"id":3387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3397,"src":"5493:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3385,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5492:9:13"},"scope":4710,"src":"5435:111:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3415,"nodeType":"Block","src":"5684:44:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3408,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"5709:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3409,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3402,"src":"5713:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3411,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"5716:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3412,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3402,"src":"5719:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3407,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"5701:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5701:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3406,"id":3414,"nodeType":"Return","src":"5694:27:13"}]},"documentation":{"id":3398,"nodeType":"StructuredDocumentation","src":"5552:60:13","text":" @dev Returns the smallest of two numbers."},"id":3416,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5626:3:13","nodeType":"FunctionDefinition","parameters":{"id":3403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3400,"mutability":"mutable","name":"a","nameLocation":"5638:1:13","nodeType":"VariableDeclaration","scope":3416,"src":"5630:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3399,"name":"uint256","nodeType":"ElementaryTypeName","src":"5630:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3402,"mutability":"mutable","name":"b","nameLocation":"5649:1:13","nodeType":"VariableDeclaration","scope":3416,"src":"5641:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3401,"name":"uint256","nodeType":"ElementaryTypeName","src":"5641:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5629:22:13"},"returnParameters":{"id":3406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3416,"src":"5675:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3404,"name":"uint256","nodeType":"ElementaryTypeName","src":"5675:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:9:13"},"scope":4710,"src":"5617:111:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3438,"nodeType":"Block","src":"5912:82:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3426,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"5967:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3427,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"5971:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5967:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3429,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5966:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3430,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"5977:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3431,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"5981:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3433,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5976:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":3434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5986:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5976:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3425,"id":3437,"nodeType":"Return","src":"5959:28:13"}]},"documentation":{"id":3417,"nodeType":"StructuredDocumentation","src":"5734:102:13","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":3439,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5850:7:13","nodeType":"FunctionDefinition","parameters":{"id":3422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3419,"mutability":"mutable","name":"a","nameLocation":"5866:1:13","nodeType":"VariableDeclaration","scope":3439,"src":"5858:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3418,"name":"uint256","nodeType":"ElementaryTypeName","src":"5858:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3421,"mutability":"mutable","name":"b","nameLocation":"5877:1:13","nodeType":"VariableDeclaration","scope":3439,"src":"5869:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5869:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5857:22:13"},"returnParameters":{"id":3425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3439,"src":"5903:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3423,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5902:9:13"},"scope":4710,"src":"5841:153:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3479,"nodeType":"Block","src":"6286:633:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3449,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3444,"src":"6300:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6305:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6300:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3460,"nodeType":"IfStatement","src":"6296:150:13","trueBody":{"id":3459,"nodeType":"Block","src":"6308:138:13","statements":[{"expression":{"arguments":[{"expression":{"id":3455,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"6412:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6418:16:13","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1184,"src":"6412:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3452,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"6400:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1216,"src":"6400:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:35:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3458,"nodeType":"ExpressionStatement","src":"6400:35:13"}]}},{"id":3478,"nodeType":"UncheckedBlock","src":"6829:84:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3463,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3442,"src":"6876:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6876:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3461,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"6860:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":3462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6869:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"6860:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6860:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3467,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3442,"src":"6887:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6887:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3470,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6886:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3471,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3444,"src":"6896:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6886:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6900:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6886:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3475,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6885:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6860:42:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3448,"id":3477,"nodeType":"Return","src":"6853:49:13"}]}]},"documentation":{"id":3440,"nodeType":"StructuredDocumentation","src":"6000:210:13","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":3480,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6224:7:13","nodeType":"FunctionDefinition","parameters":{"id":3445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3442,"mutability":"mutable","name":"a","nameLocation":"6240:1:13","nodeType":"VariableDeclaration","scope":3480,"src":"6232:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3441,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3444,"mutability":"mutable","name":"b","nameLocation":"6251:1:13","nodeType":"VariableDeclaration","scope":3480,"src":"6243:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3443,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6231:22:13"},"returnParameters":{"id":3448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3480,"src":"6277:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3446,"name":"uint256","nodeType":"ElementaryTypeName","src":"6277:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6276:9:13"},"scope":4710,"src":"6215:704:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3615,"nodeType":"Block","src":"7340:3585:13","statements":[{"id":3614,"nodeType":"UncheckedBlock","src":"7350:3569:13","statements":[{"assignments":[3493,3495],"declarations":[{"constant":false,"id":3493,"mutability":"mutable","name":"high","nameLocation":"7383:4:13","nodeType":"VariableDeclaration","scope":3614,"src":"7375:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3492,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3495,"mutability":"mutable","name":"low","nameLocation":"7397:3:13","nodeType":"VariableDeclaration","scope":3614,"src":"7389:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3494,"name":"uint256","nodeType":"ElementaryTypeName","src":"7389:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3500,"initialValue":{"arguments":[{"id":3497,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7411:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3498,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"7414:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3496,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3129,"src":"7404:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":3499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7404:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7374:42:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3501,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"7498:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7498:9:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3509,"nodeType":"IfStatement","src":"7494:365:13","trueBody":{"id":3508,"nodeType":"Block","src":"7509:350:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3504,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3495,"src":"7827:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3505,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"7833:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7827:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3491,"id":3507,"nodeType":"Return","src":"7820:24:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3510,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"7969:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3511,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"7984:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7969:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3528,"nodeType":"IfStatement","src":"7965:142:13","trueBody":{"id":3527,"nodeType":"Block","src":"7990:117:13","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3517,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"8028:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8043:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8028:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3520,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"8046:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8052:16:13","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1184,"src":"8046:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3522,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"8070:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8076:14:13","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1180,"src":"8070:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3516,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"8020:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8020:71:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3513,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"8008:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8014:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1216,"src":"8008:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:84:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3526,"nodeType":"ExpressionStatement","src":"8008:84:13"}]}},{"assignments":[3530],"declarations":[{"constant":false,"id":3530,"mutability":"mutable","name":"remainder","nameLocation":"8367:9:13","nodeType":"VariableDeclaration","scope":3614,"src":"8359:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3529,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3531,"nodeType":"VariableDeclarationStatement","src":"8359:17:13"},{"AST":{"nativeSrc":"8415:283:13","nodeType":"YulBlock","src":"8415:283:13","statements":[{"nativeSrc":"8484:38:13","nodeType":"YulAssignment","src":"8484:38:13","value":{"arguments":[{"name":"x","nativeSrc":"8504:1:13","nodeType":"YulIdentifier","src":"8504:1:13"},{"name":"y","nativeSrc":"8507:1:13","nodeType":"YulIdentifier","src":"8507:1:13"},{"name":"denominator","nativeSrc":"8510:11:13","nodeType":"YulIdentifier","src":"8510:11:13"}],"functionName":{"name":"mulmod","nativeSrc":"8497:6:13","nodeType":"YulIdentifier","src":"8497:6:13"},"nativeSrc":"8497:25:13","nodeType":"YulFunctionCall","src":"8497:25:13"},"variableNames":[{"name":"remainder","nativeSrc":"8484:9:13","nodeType":"YulIdentifier","src":"8484:9:13"}]},{"nativeSrc":"8604:37:13","nodeType":"YulAssignment","src":"8604:37:13","value":{"arguments":[{"name":"high","nativeSrc":"8616:4:13","nodeType":"YulIdentifier","src":"8616:4:13"},{"arguments":[{"name":"remainder","nativeSrc":"8625:9:13","nodeType":"YulIdentifier","src":"8625:9:13"},{"name":"low","nativeSrc":"8636:3:13","nodeType":"YulIdentifier","src":"8636:3:13"}],"functionName":{"name":"gt","nativeSrc":"8622:2:13","nodeType":"YulIdentifier","src":"8622:2:13"},"nativeSrc":"8622:18:13","nodeType":"YulFunctionCall","src":"8622:18:13"}],"functionName":{"name":"sub","nativeSrc":"8612:3:13","nodeType":"YulIdentifier","src":"8612:3:13"},"nativeSrc":"8612:29:13","nodeType":"YulFunctionCall","src":"8612:29:13"},"variableNames":[{"name":"high","nativeSrc":"8604:4:13","nodeType":"YulIdentifier","src":"8604:4:13"}]},{"nativeSrc":"8658:26:13","nodeType":"YulAssignment","src":"8658:26:13","value":{"arguments":[{"name":"low","nativeSrc":"8669:3:13","nodeType":"YulIdentifier","src":"8669:3:13"},{"name":"remainder","nativeSrc":"8674:9:13","nodeType":"YulIdentifier","src":"8674:9:13"}],"functionName":{"name":"sub","nativeSrc":"8665:3:13","nodeType":"YulIdentifier","src":"8665:3:13"},"nativeSrc":"8665:19:13","nodeType":"YulFunctionCall","src":"8665:19:13"},"variableNames":[{"name":"low","nativeSrc":"8658:3:13","nodeType":"YulIdentifier","src":"8658:3:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3487,"isOffset":false,"isSlot":false,"src":"8510:11:13","valueSize":1},{"declaration":3493,"isOffset":false,"isSlot":false,"src":"8604:4:13","valueSize":1},{"declaration":3493,"isOffset":false,"isSlot":false,"src":"8616:4:13","valueSize":1},{"declaration":3495,"isOffset":false,"isSlot":false,"src":"8636:3:13","valueSize":1},{"declaration":3495,"isOffset":false,"isSlot":false,"src":"8658:3:13","valueSize":1},{"declaration":3495,"isOffset":false,"isSlot":false,"src":"8669:3:13","valueSize":1},{"declaration":3530,"isOffset":false,"isSlot":false,"src":"8484:9:13","valueSize":1},{"declaration":3530,"isOffset":false,"isSlot":false,"src":"8625:9:13","valueSize":1},{"declaration":3530,"isOffset":false,"isSlot":false,"src":"8674:9:13","valueSize":1},{"declaration":3483,"isOffset":false,"isSlot":false,"src":"8504:1:13","valueSize":1},{"declaration":3485,"isOffset":false,"isSlot":false,"src":"8507:1:13","valueSize":1}],"flags":["memory-safe"],"id":3532,"nodeType":"InlineAssembly","src":"8390:308:13"},{"assignments":[3534],"declarations":[{"constant":false,"id":3534,"mutability":"mutable","name":"twos","nameLocation":"8910:4:13","nodeType":"VariableDeclaration","scope":3614,"src":"8902:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3533,"name":"uint256","nodeType":"ElementaryTypeName","src":"8902:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3541,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3535,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"8917:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":3536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3537,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"8936:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8932:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3539,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8917:31:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8902:46:13"},{"AST":{"nativeSrc":"8987:359:13","nodeType":"YulBlock","src":"8987:359:13","statements":[{"nativeSrc":"9052:37:13","nodeType":"YulAssignment","src":"9052:37:13","value":{"arguments":[{"name":"denominator","nativeSrc":"9071:11:13","nodeType":"YulIdentifier","src":"9071:11:13"},{"name":"twos","nativeSrc":"9084:4:13","nodeType":"YulIdentifier","src":"9084:4:13"}],"functionName":{"name":"div","nativeSrc":"9067:3:13","nodeType":"YulIdentifier","src":"9067:3:13"},"nativeSrc":"9067:22:13","nodeType":"YulFunctionCall","src":"9067:22:13"},"variableNames":[{"name":"denominator","nativeSrc":"9052:11:13","nodeType":"YulIdentifier","src":"9052:11:13"}]},{"nativeSrc":"9153:21:13","nodeType":"YulAssignment","src":"9153:21:13","value":{"arguments":[{"name":"low","nativeSrc":"9164:3:13","nodeType":"YulIdentifier","src":"9164:3:13"},{"name":"twos","nativeSrc":"9169:4:13","nodeType":"YulIdentifier","src":"9169:4:13"}],"functionName":{"name":"div","nativeSrc":"9160:3:13","nodeType":"YulIdentifier","src":"9160:3:13"},"nativeSrc":"9160:14:13","nodeType":"YulFunctionCall","src":"9160:14:13"},"variableNames":[{"name":"low","nativeSrc":"9153:3:13","nodeType":"YulIdentifier","src":"9153:3:13"}]},{"nativeSrc":"9293:39:13","nodeType":"YulAssignment","src":"9293:39:13","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9313:1:13","nodeType":"YulLiteral","src":"9313:1:13","type":"","value":"0"},{"name":"twos","nativeSrc":"9316:4:13","nodeType":"YulIdentifier","src":"9316:4:13"}],"functionName":{"name":"sub","nativeSrc":"9309:3:13","nodeType":"YulIdentifier","src":"9309:3:13"},"nativeSrc":"9309:12:13","nodeType":"YulFunctionCall","src":"9309:12:13"},{"name":"twos","nativeSrc":"9323:4:13","nodeType":"YulIdentifier","src":"9323:4:13"}],"functionName":{"name":"div","nativeSrc":"9305:3:13","nodeType":"YulIdentifier","src":"9305:3:13"},"nativeSrc":"9305:23:13","nodeType":"YulFunctionCall","src":"9305:23:13"},{"kind":"number","nativeSrc":"9330:1:13","nodeType":"YulLiteral","src":"9330:1:13","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9301:3:13","nodeType":"YulIdentifier","src":"9301:3:13"},"nativeSrc":"9301:31:13","nodeType":"YulFunctionCall","src":"9301:31:13"},"variableNames":[{"name":"twos","nativeSrc":"9293:4:13","nodeType":"YulIdentifier","src":"9293:4:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3487,"isOffset":false,"isSlot":false,"src":"9052:11:13","valueSize":1},{"declaration":3487,"isOffset":false,"isSlot":false,"src":"9071:11:13","valueSize":1},{"declaration":3495,"isOffset":false,"isSlot":false,"src":"9153:3:13","valueSize":1},{"declaration":3495,"isOffset":false,"isSlot":false,"src":"9164:3:13","valueSize":1},{"declaration":3534,"isOffset":false,"isSlot":false,"src":"9084:4:13","valueSize":1},{"declaration":3534,"isOffset":false,"isSlot":false,"src":"9169:4:13","valueSize":1},{"declaration":3534,"isOffset":false,"isSlot":false,"src":"9293:4:13","valueSize":1},{"declaration":3534,"isOffset":false,"isSlot":false,"src":"9316:4:13","valueSize":1},{"declaration":3534,"isOffset":false,"isSlot":false,"src":"9323:4:13","valueSize":1}],"flags":["memory-safe"],"id":3542,"nodeType":"InlineAssembly","src":"8962:384:13"},{"expression":{"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3543,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3495,"src":"9409:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3544,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"9416:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3545,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"9423:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9416:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3548,"nodeType":"ExpressionStatement","src":"9409:18:13"},{"assignments":[3550],"declarations":[{"constant":false,"id":3550,"mutability":"mutable","name":"inverse","nameLocation":"9770:7:13","nodeType":"VariableDeclaration","scope":3614,"src":"9762:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3549,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3557,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":3551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9781:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3552,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"9785:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9781:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3554,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9780:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":3555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9800:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9780:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9762:39:13"},{"expression":{"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3558,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10018:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10029:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3560,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"10033:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3561,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10047:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10033:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10029:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10018:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3565,"nodeType":"ExpressionStatement","src":"10018:36:13"},{"expression":{"id":3572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3566,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10088:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10099:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3568,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"10103:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10117:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10099:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10088:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3573,"nodeType":"ExpressionStatement","src":"10088:36:13"},{"expression":{"id":3580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3574,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10160:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10171:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3576,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"10175:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10189:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10175:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10160:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3581,"nodeType":"ExpressionStatement","src":"10160:36:13"},{"expression":{"id":3588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3582,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10231:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10242:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3584,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"10246:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10260:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10246:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10242:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10231:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3589,"nodeType":"ExpressionStatement","src":"10231:36:13"},{"expression":{"id":3596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3590,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10304:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10315:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3592,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"10319:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10333:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10319:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10315:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10304:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3597,"nodeType":"ExpressionStatement","src":"10304:36:13"},{"expression":{"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3598,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10378:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10389:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3600,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"10393:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10407:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10393:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10389:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10378:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3605,"nodeType":"ExpressionStatement","src":"10378:36:13"},{"expression":{"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3606,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"10859:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3607,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3495,"src":"10868:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3608,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"10874:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10868:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10859:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3611,"nodeType":"ExpressionStatement","src":"10859:22:13"},{"expression":{"id":3612,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"10902:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3491,"id":3613,"nodeType":"Return","src":"10895:13:13"}]}]},"documentation":{"id":3481,"nodeType":"StructuredDocumentation","src":"6925:312:13","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":3616,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7251:6:13","nodeType":"FunctionDefinition","parameters":{"id":3488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3483,"mutability":"mutable","name":"x","nameLocation":"7266:1:13","nodeType":"VariableDeclaration","scope":3616,"src":"7258:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3482,"name":"uint256","nodeType":"ElementaryTypeName","src":"7258:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3485,"mutability":"mutable","name":"y","nameLocation":"7277:1:13","nodeType":"VariableDeclaration","scope":3616,"src":"7269:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3484,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3487,"mutability":"mutable","name":"denominator","nameLocation":"7288:11:13","nodeType":"VariableDeclaration","scope":3616,"src":"7280:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3486,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7257:43:13"},"returnParameters":{"id":3491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3490,"mutability":"mutable","name":"result","nameLocation":"7332:6:13","nodeType":"VariableDeclaration","scope":3616,"src":"7324:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3489,"name":"uint256","nodeType":"ElementaryTypeName","src":"7324:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7323:16:13"},"scope":4710,"src":"7242:3683:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3652,"nodeType":"Block","src":"11164:128:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3632,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"11188:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3633,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"11191:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3634,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"11194:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3631,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[3616,3653],"referencedDeclaration":3616,"src":"11181:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11181:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3639,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"11242:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}],"id":3638,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"11225:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3101_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3642,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"11262:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3643,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"11265:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3644,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"11268:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3641,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11255:6:13","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11255:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11283:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11255:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11225:59:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3636,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"11209:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11218:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"11209:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11209:76:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:104:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3630,"id":3651,"nodeType":"Return","src":"11174:111:13"}]},"documentation":{"id":3617,"nodeType":"StructuredDocumentation","src":"10931:118:13","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":3653,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11063:6:13","nodeType":"FunctionDefinition","parameters":{"id":3627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3619,"mutability":"mutable","name":"x","nameLocation":"11078:1:13","nodeType":"VariableDeclaration","scope":3653,"src":"11070:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3618,"name":"uint256","nodeType":"ElementaryTypeName","src":"11070:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3621,"mutability":"mutable","name":"y","nameLocation":"11089:1:13","nodeType":"VariableDeclaration","scope":3653,"src":"11081:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3620,"name":"uint256","nodeType":"ElementaryTypeName","src":"11081:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3623,"mutability":"mutable","name":"denominator","nameLocation":"11100:11:13","nodeType":"VariableDeclaration","scope":3653,"src":"11092:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3622,"name":"uint256","nodeType":"ElementaryTypeName","src":"11092:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3626,"mutability":"mutable","name":"rounding","nameLocation":"11122:8:13","nodeType":"VariableDeclaration","scope":3653,"src":"11113:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"},"typeName":{"id":3625,"nodeType":"UserDefinedTypeName","pathNode":{"id":3624,"name":"Rounding","nameLocations":["11113:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":3101,"src":"11113:8:13"},"referencedDeclaration":3101,"src":"11113:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11069:62:13"},"returnParameters":{"id":3630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3653,"src":"11155:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3628,"name":"uint256","nodeType":"ElementaryTypeName","src":"11155:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:9:13"},"scope":4710,"src":"11054:238:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3702,"nodeType":"Block","src":"11500:245:13","statements":[{"id":3701,"nodeType":"UncheckedBlock","src":"11510:229:13","statements":[{"assignments":[3666,3668],"declarations":[{"constant":false,"id":3666,"mutability":"mutable","name":"high","nameLocation":"11543:4:13","nodeType":"VariableDeclaration","scope":3701,"src":"11535:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3665,"name":"uint256","nodeType":"ElementaryTypeName","src":"11535:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3668,"mutability":"mutable","name":"low","nameLocation":"11557:3:13","nodeType":"VariableDeclaration","scope":3701,"src":"11549:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3667,"name":"uint256","nodeType":"ElementaryTypeName","src":"11549:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3673,"initialValue":{"arguments":[{"id":3670,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"11571:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3671,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3658,"src":"11574:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3669,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3129,"src":"11564:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11564:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11534:42:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3674,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"11594:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11602:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3676,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"11607:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11602:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11594:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3687,"nodeType":"IfStatement","src":"11590:86:13","trueBody":{"id":3686,"nodeType":"Block","src":"11610:66:13","statements":[{"expression":{"arguments":[{"expression":{"id":3682,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"11640:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11646:14:13","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1180,"src":"11640:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3679,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"11628:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11634:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1216,"src":"11628:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11628:33:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3685,"nodeType":"ExpressionStatement","src":"11628:33:13"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3688,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"11697:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":3689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11706:3:13","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3690,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"11712:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11706:7:13","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3692,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11705:9:13","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11697:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3694,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11696:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3695,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3668,"src":"11719:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":3696,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"11726:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11719:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3698,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11718:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11696:32:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3664,"id":3700,"nodeType":"Return","src":"11689:39:13"}]}]},"documentation":{"id":3654,"nodeType":"StructuredDocumentation","src":"11298:111:13","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":3703,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11423:6:13","nodeType":"FunctionDefinition","parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3656,"mutability":"mutable","name":"x","nameLocation":"11438:1:13","nodeType":"VariableDeclaration","scope":3703,"src":"11430:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3655,"name":"uint256","nodeType":"ElementaryTypeName","src":"11430:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3658,"mutability":"mutable","name":"y","nameLocation":"11449:1:13","nodeType":"VariableDeclaration","scope":3703,"src":"11441:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3657,"name":"uint256","nodeType":"ElementaryTypeName","src":"11441:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3660,"mutability":"mutable","name":"n","nameLocation":"11458:1:13","nodeType":"VariableDeclaration","scope":3703,"src":"11452:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3659,"name":"uint8","nodeType":"ElementaryTypeName","src":"11452:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11429:31:13"},"returnParameters":{"id":3664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3663,"mutability":"mutable","name":"result","nameLocation":"11492:6:13","nodeType":"VariableDeclaration","scope":3703,"src":"11484:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3662,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:16:13"},"scope":4710,"src":"11414:331:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3741,"nodeType":"Block","src":"11963:113:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3719,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"11987:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3720,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"11990:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3721,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"11993:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3718,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[3703,3742],"referencedDeclaration":3703,"src":"11980:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11980:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3726,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"12031:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}],"id":3725,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"12014:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3101_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3729,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"12051:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3730,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"12054:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12057:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3732,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"12062:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12057:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3728,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12044:6:13","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12044:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12067:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12044:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12014:54:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3723,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"11998:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12007:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"11998:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11998:71:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11980:89:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3717,"id":3740,"nodeType":"Return","src":"11973:96:13"}]},"documentation":{"id":3704,"nodeType":"StructuredDocumentation","src":"11751:109:13","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":3742,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11874:6:13","nodeType":"FunctionDefinition","parameters":{"id":3714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3706,"mutability":"mutable","name":"x","nameLocation":"11889:1:13","nodeType":"VariableDeclaration","scope":3742,"src":"11881:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3705,"name":"uint256","nodeType":"ElementaryTypeName","src":"11881:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3708,"mutability":"mutable","name":"y","nameLocation":"11900:1:13","nodeType":"VariableDeclaration","scope":3742,"src":"11892:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3707,"name":"uint256","nodeType":"ElementaryTypeName","src":"11892:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3710,"mutability":"mutable","name":"n","nameLocation":"11909:1:13","nodeType":"VariableDeclaration","scope":3742,"src":"11903:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3709,"name":"uint8","nodeType":"ElementaryTypeName","src":"11903:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3713,"mutability":"mutable","name":"rounding","nameLocation":"11921:8:13","nodeType":"VariableDeclaration","scope":3742,"src":"11912:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"},"typeName":{"id":3712,"nodeType":"UserDefinedTypeName","pathNode":{"id":3711,"name":"Rounding","nameLocations":["11912:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":3101,"src":"11912:8:13"},"referencedDeclaration":3101,"src":"11912:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11880:50:13"},"returnParameters":{"id":3717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3742,"src":"11954:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3715,"name":"uint256","nodeType":"ElementaryTypeName","src":"11954:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11953:9:13"},"scope":4710,"src":"11865:211:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3838,"nodeType":"Block","src":"12710:1849:13","statements":[{"id":3837,"nodeType":"UncheckedBlock","src":"12720:1833:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3752,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"12748:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12753:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12748:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3757,"nodeType":"IfStatement","src":"12744:20:13","trueBody":{"expression":{"hexValue":"30","id":3755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3751,"id":3756,"nodeType":"Return","src":"12756:8:13"}},{"assignments":[3759],"declarations":[{"constant":false,"id":3759,"mutability":"mutable","name":"remainder","nameLocation":"13243:9:13","nodeType":"VariableDeclaration","scope":3837,"src":"13235:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3758,"name":"uint256","nodeType":"ElementaryTypeName","src":"13235:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3763,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3760,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3745,"src":"13255:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3761,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"13259:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13255:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13235:25:13"},{"assignments":[3765],"declarations":[{"constant":false,"id":3765,"mutability":"mutable","name":"gcd","nameLocation":"13282:3:13","nodeType":"VariableDeclaration","scope":3837,"src":"13274:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3764,"name":"uint256","nodeType":"ElementaryTypeName","src":"13274:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3767,"initialValue":{"id":3766,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"13288:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13274:15:13"},{"assignments":[3769],"declarations":[{"constant":false,"id":3769,"mutability":"mutable","name":"x","nameLocation":"13432:1:13","nodeType":"VariableDeclaration","scope":3837,"src":"13425:8:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3768,"name":"int256","nodeType":"ElementaryTypeName","src":"13425:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3771,"initialValue":{"hexValue":"30","id":3770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13425:12:13"},{"assignments":[3773],"declarations":[{"constant":false,"id":3773,"mutability":"mutable","name":"y","nameLocation":"13458:1:13","nodeType":"VariableDeclaration","scope":3837,"src":"13451:8:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3772,"name":"int256","nodeType":"ElementaryTypeName","src":"13451:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3775,"initialValue":{"hexValue":"31","id":3774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13462:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13451:12:13"},{"body":{"id":3812,"nodeType":"Block","src":"13501:882:13","statements":[{"assignments":[3780],"declarations":[{"constant":false,"id":3780,"mutability":"mutable","name":"quotient","nameLocation":"13527:8:13","nodeType":"VariableDeclaration","scope":3812,"src":"13519:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3779,"name":"uint256","nodeType":"ElementaryTypeName","src":"13519:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3784,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3781,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"13538:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3782,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"13544:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13538:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13519:34:13"},{"expression":{"id":3795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3785,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"13573:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3786,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"13578:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3787,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13572:16:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":3788,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"13678:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3789,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"13923:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3790,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"13929:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3791,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3780,"src":"13941:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13929:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13923:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13591:376:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13572:395:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3796,"nodeType":"ExpressionStatement","src":"13572:395:13"},{"expression":{"id":3810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3797,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"13987:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":3798,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"13990:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3799,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13986:6:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":3800,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"14072:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3801,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"14326:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3802,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"14330:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3805,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3780,"src":"14341:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14334:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":3803,"name":"int256","nodeType":"ElementaryTypeName","src":"14334:6:13","typeDescriptions":{}}},"id":3806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14334:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14330:20:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14326:24:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3809,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13995:373:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"13986:382:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3811,"nodeType":"ExpressionStatement","src":"13986:382:13"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3776,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"13485:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13498:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13485:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3813,"nodeType":"WhileStatement","src":"13478:905:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3814,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"14401:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":3815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14408:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14401:8:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3819,"nodeType":"IfStatement","src":"14397:22:13","trueBody":{"expression":{"hexValue":"30","id":3817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14418:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3751,"id":3818,"nodeType":"Return","src":"14411:8:13"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3821,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"14470:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14474:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14470:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3824,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"14477:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14489:2:13","subExpression":{"id":3827,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"14490:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14481:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3825,"name":"uint256","nodeType":"ElementaryTypeName","src":"14481:7:13","typeDescriptions":{}}},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14481:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14477:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3833,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"14502:1:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14494:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3831,"name":"uint256","nodeType":"ElementaryTypeName","src":"14494:7:13","typeDescriptions":{}}},"id":3834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14494:10:13","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":3820,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"14462:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14462:43:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3751,"id":3836,"nodeType":"Return","src":"14455:50:13"}]}]},"documentation":{"id":3743,"nodeType":"StructuredDocumentation","src":"12082:553:13","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":3839,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12649:6:13","nodeType":"FunctionDefinition","parameters":{"id":3748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3745,"mutability":"mutable","name":"a","nameLocation":"12664:1:13","nodeType":"VariableDeclaration","scope":3839,"src":"12656:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3744,"name":"uint256","nodeType":"ElementaryTypeName","src":"12656:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3747,"mutability":"mutable","name":"n","nameLocation":"12675:1:13","nodeType":"VariableDeclaration","scope":3839,"src":"12667:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3746,"name":"uint256","nodeType":"ElementaryTypeName","src":"12667:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12655:22:13"},"returnParameters":{"id":3751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3839,"src":"12701:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3749,"name":"uint256","nodeType":"ElementaryTypeName","src":"12701:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12700:9:13"},"scope":4710,"src":"12640:1919:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3859,"nodeType":"Block","src":"15159:82:13","statements":[{"id":3858,"nodeType":"UncheckedBlock","src":"15169:66:13","statements":[{"expression":{"arguments":[{"id":3851,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"15212:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3852,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"15215:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":3853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15219:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15215:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3855,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"15222:1:13","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":3849,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"15200:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4710_$","typeString":"type(library Math)"}},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15205:6:13","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":3896,"src":"15200:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15200:24:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3848,"id":3857,"nodeType":"Return","src":"15193:31:13"}]}]},"documentation":{"id":3840,"nodeType":"StructuredDocumentation","src":"14565:514:13","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":3860,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15093:11:13","nodeType":"FunctionDefinition","parameters":{"id":3845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3842,"mutability":"mutable","name":"a","nameLocation":"15113:1:13","nodeType":"VariableDeclaration","scope":3860,"src":"15105:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3841,"name":"uint256","nodeType":"ElementaryTypeName","src":"15105:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3844,"mutability":"mutable","name":"p","nameLocation":"15124:1:13","nodeType":"VariableDeclaration","scope":3860,"src":"15116:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3843,"name":"uint256","nodeType":"ElementaryTypeName","src":"15116:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15104:22:13"},"returnParameters":{"id":3848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3860,"src":"15150:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3846,"name":"uint256","nodeType":"ElementaryTypeName","src":"15150:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15149:9:13"},"scope":4710,"src":"15084:157:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3895,"nodeType":"Block","src":"16011:174:13","statements":[{"assignments":[3873,3875],"declarations":[{"constant":false,"id":3873,"mutability":"mutable","name":"success","nameLocation":"16027:7:13","nodeType":"VariableDeclaration","scope":3895,"src":"16022:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3872,"name":"bool","nodeType":"ElementaryTypeName","src":"16022:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3875,"mutability":"mutable","name":"result","nameLocation":"16044:6:13","nodeType":"VariableDeclaration","scope":3895,"src":"16036:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3874,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3881,"initialValue":{"arguments":[{"id":3877,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3863,"src":"16064:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3878,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"16067:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3879,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"16070:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3876,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[3920,4002],"referencedDeclaration":3920,"src":"16054:9:13","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":3880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16021:51:13"},{"condition":{"id":3883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16086:8:13","subExpression":{"id":3882,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"16087:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3892,"nodeType":"IfStatement","src":"16082:74:13","trueBody":{"id":3891,"nodeType":"Block","src":"16096:60:13","statements":[{"expression":{"arguments":[{"expression":{"id":3887,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"16122:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16128:16:13","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1184,"src":"16122:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3884,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"16110:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16116:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1216,"src":"16110:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:35:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3890,"nodeType":"ExpressionStatement","src":"16110:35:13"}]}},{"expression":{"id":3893,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3875,"src":"16172:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3871,"id":3894,"nodeType":"Return","src":"16165:13:13"}]},"documentation":{"id":3861,"nodeType":"StructuredDocumentation","src":"15247:678:13","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":3896,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15939:6:13","nodeType":"FunctionDefinition","parameters":{"id":3868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3863,"mutability":"mutable","name":"b","nameLocation":"15954:1:13","nodeType":"VariableDeclaration","scope":3896,"src":"15946:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3862,"name":"uint256","nodeType":"ElementaryTypeName","src":"15946:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3865,"mutability":"mutable","name":"e","nameLocation":"15965:1:13","nodeType":"VariableDeclaration","scope":3896,"src":"15957:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3864,"name":"uint256","nodeType":"ElementaryTypeName","src":"15957:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3867,"mutability":"mutable","name":"m","nameLocation":"15976:1:13","nodeType":"VariableDeclaration","scope":3896,"src":"15968:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3866,"name":"uint256","nodeType":"ElementaryTypeName","src":"15968:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15945:33:13"},"returnParameters":{"id":3871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3896,"src":"16002:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3869,"name":"uint256","nodeType":"ElementaryTypeName","src":"16002:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16001:9:13"},"scope":4710,"src":"15930:255:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3919,"nodeType":"Block","src":"17039:1493:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3910,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"17053:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17058:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17053:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3917,"nodeType":"IfStatement","src":"17049:29:13","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17069:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17076:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17068:10:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3909,"id":3916,"nodeType":"Return","src":"17061:17:13"}},{"AST":{"nativeSrc":"17113:1413:13","nodeType":"YulBlock","src":"17113:1413:13","statements":[{"nativeSrc":"17127:22:13","nodeType":"YulVariableDeclaration","src":"17127:22:13","value":{"arguments":[{"kind":"number","nativeSrc":"17144:4:13","nodeType":"YulLiteral","src":"17144:4:13","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17138:5:13","nodeType":"YulIdentifier","src":"17138:5:13"},"nativeSrc":"17138:11:13","nodeType":"YulFunctionCall","src":"17138:11:13"},"variables":[{"name":"ptr","nativeSrc":"17131:3:13","nodeType":"YulTypedName","src":"17131:3:13","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18057:3:13","nodeType":"YulIdentifier","src":"18057:3:13"},{"kind":"number","nativeSrc":"18062:4:13","nodeType":"YulLiteral","src":"18062:4:13","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18050:6:13","nodeType":"YulIdentifier","src":"18050:6:13"},"nativeSrc":"18050:17:13","nodeType":"YulFunctionCall","src":"18050:17:13"},"nativeSrc":"18050:17:13","nodeType":"YulExpressionStatement","src":"18050:17:13"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18091:3:13","nodeType":"YulIdentifier","src":"18091:3:13"},{"kind":"number","nativeSrc":"18096:4:13","nodeType":"YulLiteral","src":"18096:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18087:3:13","nodeType":"YulIdentifier","src":"18087:3:13"},"nativeSrc":"18087:14:13","nodeType":"YulFunctionCall","src":"18087:14:13"},{"kind":"number","nativeSrc":"18103:4:13","nodeType":"YulLiteral","src":"18103:4:13","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18080:6:13","nodeType":"YulIdentifier","src":"18080:6:13"},"nativeSrc":"18080:28:13","nodeType":"YulFunctionCall","src":"18080:28:13"},"nativeSrc":"18080:28:13","nodeType":"YulExpressionStatement","src":"18080:28:13"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18132:3:13","nodeType":"YulIdentifier","src":"18132:3:13"},{"kind":"number","nativeSrc":"18137:4:13","nodeType":"YulLiteral","src":"18137:4:13","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18128:3:13","nodeType":"YulIdentifier","src":"18128:3:13"},"nativeSrc":"18128:14:13","nodeType":"YulFunctionCall","src":"18128:14:13"},{"kind":"number","nativeSrc":"18144:4:13","nodeType":"YulLiteral","src":"18144:4:13","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18121:6:13","nodeType":"YulIdentifier","src":"18121:6:13"},"nativeSrc":"18121:28:13","nodeType":"YulFunctionCall","src":"18121:28:13"},"nativeSrc":"18121:28:13","nodeType":"YulExpressionStatement","src":"18121:28:13"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18173:3:13","nodeType":"YulIdentifier","src":"18173:3:13"},{"kind":"number","nativeSrc":"18178:4:13","nodeType":"YulLiteral","src":"18178:4:13","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18169:3:13","nodeType":"YulIdentifier","src":"18169:3:13"},"nativeSrc":"18169:14:13","nodeType":"YulFunctionCall","src":"18169:14:13"},{"name":"b","nativeSrc":"18185:1:13","nodeType":"YulIdentifier","src":"18185:1:13"}],"functionName":{"name":"mstore","nativeSrc":"18162:6:13","nodeType":"YulIdentifier","src":"18162:6:13"},"nativeSrc":"18162:25:13","nodeType":"YulFunctionCall","src":"18162:25:13"},"nativeSrc":"18162:25:13","nodeType":"YulExpressionStatement","src":"18162:25:13"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18211:3:13","nodeType":"YulIdentifier","src":"18211:3:13"},{"kind":"number","nativeSrc":"18216:4:13","nodeType":"YulLiteral","src":"18216:4:13","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18207:3:13","nodeType":"YulIdentifier","src":"18207:3:13"},"nativeSrc":"18207:14:13","nodeType":"YulFunctionCall","src":"18207:14:13"},{"name":"e","nativeSrc":"18223:1:13","nodeType":"YulIdentifier","src":"18223:1:13"}],"functionName":{"name":"mstore","nativeSrc":"18200:6:13","nodeType":"YulIdentifier","src":"18200:6:13"},"nativeSrc":"18200:25:13","nodeType":"YulFunctionCall","src":"18200:25:13"},"nativeSrc":"18200:25:13","nodeType":"YulExpressionStatement","src":"18200:25:13"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18249:3:13","nodeType":"YulIdentifier","src":"18249:3:13"},{"kind":"number","nativeSrc":"18254:4:13","nodeType":"YulLiteral","src":"18254:4:13","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18245:3:13","nodeType":"YulIdentifier","src":"18245:3:13"},"nativeSrc":"18245:14:13","nodeType":"YulFunctionCall","src":"18245:14:13"},{"name":"m","nativeSrc":"18261:1:13","nodeType":"YulIdentifier","src":"18261:1:13"}],"functionName":{"name":"mstore","nativeSrc":"18238:6:13","nodeType":"YulIdentifier","src":"18238:6:13"},"nativeSrc":"18238:25:13","nodeType":"YulFunctionCall","src":"18238:25:13"},"nativeSrc":"18238:25:13","nodeType":"YulExpressionStatement","src":"18238:25:13"},{"nativeSrc":"18425:57:13","nodeType":"YulAssignment","src":"18425:57:13","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18447:3:13","nodeType":"YulIdentifier","src":"18447:3:13"},"nativeSrc":"18447:5:13","nodeType":"YulFunctionCall","src":"18447:5:13"},{"kind":"number","nativeSrc":"18454:4:13","nodeType":"YulLiteral","src":"18454:4:13","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18460:3:13","nodeType":"YulIdentifier","src":"18460:3:13"},{"kind":"number","nativeSrc":"18465:4:13","nodeType":"YulLiteral","src":"18465:4:13","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18471:4:13","nodeType":"YulLiteral","src":"18471:4:13","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18477:4:13","nodeType":"YulLiteral","src":"18477:4:13","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18436:10:13","nodeType":"YulIdentifier","src":"18436:10:13"},"nativeSrc":"18436:46:13","nodeType":"YulFunctionCall","src":"18436:46:13"},"variableNames":[{"name":"success","nativeSrc":"18425:7:13","nodeType":"YulIdentifier","src":"18425:7:13"}]},{"nativeSrc":"18495:21:13","nodeType":"YulAssignment","src":"18495:21:13","value":{"arguments":[{"kind":"number","nativeSrc":"18511:4:13","nodeType":"YulLiteral","src":"18511:4:13","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18505:5:13","nodeType":"YulIdentifier","src":"18505:5:13"},"nativeSrc":"18505:11:13","nodeType":"YulFunctionCall","src":"18505:11:13"},"variableNames":[{"name":"result","nativeSrc":"18495:6:13","nodeType":"YulIdentifier","src":"18495:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3899,"isOffset":false,"isSlot":false,"src":"18185:1:13","valueSize":1},{"declaration":3901,"isOffset":false,"isSlot":false,"src":"18223:1:13","valueSize":1},{"declaration":3903,"isOffset":false,"isSlot":false,"src":"18261:1:13","valueSize":1},{"declaration":3908,"isOffset":false,"isSlot":false,"src":"18495:6:13","valueSize":1},{"declaration":3906,"isOffset":false,"isSlot":false,"src":"18425:7:13","valueSize":1}],"flags":["memory-safe"],"id":3918,"nodeType":"InlineAssembly","src":"17088:1438:13"}]},"documentation":{"id":3897,"nodeType":"StructuredDocumentation","src":"16191:738:13","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":3920,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16943:9:13","nodeType":"FunctionDefinition","parameters":{"id":3904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3899,"mutability":"mutable","name":"b","nameLocation":"16961:1:13","nodeType":"VariableDeclaration","scope":3920,"src":"16953:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3898,"name":"uint256","nodeType":"ElementaryTypeName","src":"16953:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3901,"mutability":"mutable","name":"e","nameLocation":"16972:1:13","nodeType":"VariableDeclaration","scope":3920,"src":"16964:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3900,"name":"uint256","nodeType":"ElementaryTypeName","src":"16964:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3903,"mutability":"mutable","name":"m","nameLocation":"16983:1:13","nodeType":"VariableDeclaration","scope":3920,"src":"16975:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3902,"name":"uint256","nodeType":"ElementaryTypeName","src":"16975:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16952:33:13"},"returnParameters":{"id":3909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"mutability":"mutable","name":"success","nameLocation":"17014:7:13","nodeType":"VariableDeclaration","scope":3920,"src":"17009:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3905,"name":"bool","nodeType":"ElementaryTypeName","src":"17009:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3908,"mutability":"mutable","name":"result","nameLocation":"17031:6:13","nodeType":"VariableDeclaration","scope":3920,"src":"17023:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3907,"name":"uint256","nodeType":"ElementaryTypeName","src":"17023:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17008:30:13"},"scope":4710,"src":"16934:1598:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3955,"nodeType":"Block","src":"18729:179:13","statements":[{"assignments":[3933,3935],"declarations":[{"constant":false,"id":3933,"mutability":"mutable","name":"success","nameLocation":"18745:7:13","nodeType":"VariableDeclaration","scope":3955,"src":"18740:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3932,"name":"bool","nodeType":"ElementaryTypeName","src":"18740:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3935,"mutability":"mutable","name":"result","nameLocation":"18767:6:13","nodeType":"VariableDeclaration","scope":3955,"src":"18754:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3934,"name":"bytes","nodeType":"ElementaryTypeName","src":"18754:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3941,"initialValue":{"arguments":[{"id":3937,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3923,"src":"18787:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3938,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"18790:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3939,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3927,"src":"18793:1:13","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":3936,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[3920,4002],"referencedDeclaration":4002,"src":"18777:9:13","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":3940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18777:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18739:56:13"},{"condition":{"id":3943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18809:8:13","subExpression":{"id":3942,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3933,"src":"18810:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3952,"nodeType":"IfStatement","src":"18805:74:13","trueBody":{"id":3951,"nodeType":"Block","src":"18819:60:13","statements":[{"expression":{"arguments":[{"expression":{"id":3947,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"18845:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18851:16:13","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1184,"src":"18845:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3944,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"18833:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1217_$","typeString":"type(library Panic)"}},"id":3946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18839:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1216,"src":"18833:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:35:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3950,"nodeType":"ExpressionStatement","src":"18833:35:13"}]}},{"expression":{"id":3953,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"18895:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3931,"id":3954,"nodeType":"Return","src":"18888:13:13"}]},"documentation":{"id":3921,"nodeType":"StructuredDocumentation","src":"18538:85:13","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":3956,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18637:6:13","nodeType":"FunctionDefinition","parameters":{"id":3928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3923,"mutability":"mutable","name":"b","nameLocation":"18657:1:13","nodeType":"VariableDeclaration","scope":3956,"src":"18644:14:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3922,"name":"bytes","nodeType":"ElementaryTypeName","src":"18644:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3925,"mutability":"mutable","name":"e","nameLocation":"18673:1:13","nodeType":"VariableDeclaration","scope":3956,"src":"18660:14:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3924,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3927,"mutability":"mutable","name":"m","nameLocation":"18689:1:13","nodeType":"VariableDeclaration","scope":3956,"src":"18676:14:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3926,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18643:48:13"},"returnParameters":{"id":3931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3956,"src":"18715:12:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3929,"name":"bytes","nodeType":"ElementaryTypeName","src":"18715:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18714:14:13"},"scope":4710,"src":"18628:280:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4001,"nodeType":"Block","src":"19162:771:13","statements":[{"condition":{"arguments":[{"id":3971,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3963,"src":"19187:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3970,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4035,"src":"19176:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":3972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19176:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3980,"nodeType":"IfStatement","src":"19172:47:13","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19199:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":3976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19216:1:13","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":3975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19206:9:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3974,"name":"bytes","nodeType":"ElementaryTypeName","src":"19210:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19206:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3978,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19198:21:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":3969,"id":3979,"nodeType":"Return","src":"19191:28:13"}},{"assignments":[3982],"declarations":[{"constant":false,"id":3982,"mutability":"mutable","name":"mLen","nameLocation":"19238:4:13","nodeType":"VariableDeclaration","scope":4001,"src":"19230:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3981,"name":"uint256","nodeType":"ElementaryTypeName","src":"19230:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3985,"initialValue":{"expression":{"id":3983,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3963,"src":"19245:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19247:6:13","memberName":"length","nodeType":"MemberAccess","src":"19245:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19230:23:13"},{"expression":{"id":3998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3986,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3968,"src":"19335:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3989,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"19361:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19363:6:13","memberName":"length","nodeType":"MemberAccess","src":"19361:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3991,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3961,"src":"19371:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19373:6:13","memberName":"length","nodeType":"MemberAccess","src":"19371:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3993,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"19381:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3994,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"19387:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3995,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3961,"src":"19390:1:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3996,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3963,"src":"19393:1:13","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":3987,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19344:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19348:12:13","memberName":"encodePacked","nodeType":"MemberAccess","src":"19344:16:13","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:51:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19335:60:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3999,"nodeType":"ExpressionStatement","src":"19335:60:13"},{"AST":{"nativeSrc":"19431:496:13","nodeType":"YulBlock","src":"19431:496:13","statements":[{"nativeSrc":"19445:32:13","nodeType":"YulVariableDeclaration","src":"19445:32:13","value":{"arguments":[{"name":"result","nativeSrc":"19464:6:13","nodeType":"YulIdentifier","src":"19464:6:13"},{"kind":"number","nativeSrc":"19472:4:13","nodeType":"YulLiteral","src":"19472:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19460:3:13","nodeType":"YulIdentifier","src":"19460:3:13"},"nativeSrc":"19460:17:13","nodeType":"YulFunctionCall","src":"19460:17:13"},"variables":[{"name":"dataPtr","nativeSrc":"19449:7:13","nodeType":"YulTypedName","src":"19449:7:13","type":""}]},{"nativeSrc":"19567:73:13","nodeType":"YulAssignment","src":"19567:73:13","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19589:3:13","nodeType":"YulIdentifier","src":"19589:3:13"},"nativeSrc":"19589:5:13","nodeType":"YulFunctionCall","src":"19589:5:13"},{"kind":"number","nativeSrc":"19596:4:13","nodeType":"YulLiteral","src":"19596:4:13","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19602:7:13","nodeType":"YulIdentifier","src":"19602:7:13"},{"arguments":[{"name":"result","nativeSrc":"19617:6:13","nodeType":"YulIdentifier","src":"19617:6:13"}],"functionName":{"name":"mload","nativeSrc":"19611:5:13","nodeType":"YulIdentifier","src":"19611:5:13"},"nativeSrc":"19611:13:13","nodeType":"YulFunctionCall","src":"19611:13:13"},{"name":"dataPtr","nativeSrc":"19626:7:13","nodeType":"YulIdentifier","src":"19626:7:13"},{"name":"mLen","nativeSrc":"19635:4:13","nodeType":"YulIdentifier","src":"19635:4:13"}],"functionName":{"name":"staticcall","nativeSrc":"19578:10:13","nodeType":"YulIdentifier","src":"19578:10:13"},"nativeSrc":"19578:62:13","nodeType":"YulFunctionCall","src":"19578:62:13"},"variableNames":[{"name":"success","nativeSrc":"19567:7:13","nodeType":"YulIdentifier","src":"19567:7:13"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19796:6:13","nodeType":"YulIdentifier","src":"19796:6:13"},{"name":"mLen","nativeSrc":"19804:4:13","nodeType":"YulIdentifier","src":"19804:4:13"}],"functionName":{"name":"mstore","nativeSrc":"19789:6:13","nodeType":"YulIdentifier","src":"19789:6:13"},"nativeSrc":"19789:20:13","nodeType":"YulFunctionCall","src":"19789:20:13"},"nativeSrc":"19789:20:13","nodeType":"YulExpressionStatement","src":"19789:20:13"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19892:4:13","nodeType":"YulLiteral","src":"19892:4:13","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19902:7:13","nodeType":"YulIdentifier","src":"19902:7:13"},{"name":"mLen","nativeSrc":"19911:4:13","nodeType":"YulIdentifier","src":"19911:4:13"}],"functionName":{"name":"add","nativeSrc":"19898:3:13","nodeType":"YulIdentifier","src":"19898:3:13"},"nativeSrc":"19898:18:13","nodeType":"YulFunctionCall","src":"19898:18:13"}],"functionName":{"name":"mstore","nativeSrc":"19885:6:13","nodeType":"YulIdentifier","src":"19885:6:13"},"nativeSrc":"19885:32:13","nodeType":"YulFunctionCall","src":"19885:32:13"},"nativeSrc":"19885:32:13","nodeType":"YulExpressionStatement","src":"19885:32:13"}]},"evmVersion":"paris","externalReferences":[{"declaration":3982,"isOffset":false,"isSlot":false,"src":"19635:4:13","valueSize":1},{"declaration":3982,"isOffset":false,"isSlot":false,"src":"19804:4:13","valueSize":1},{"declaration":3982,"isOffset":false,"isSlot":false,"src":"19911:4:13","valueSize":1},{"declaration":3968,"isOffset":false,"isSlot":false,"src":"19464:6:13","valueSize":1},{"declaration":3968,"isOffset":false,"isSlot":false,"src":"19617:6:13","valueSize":1},{"declaration":3968,"isOffset":false,"isSlot":false,"src":"19796:6:13","valueSize":1},{"declaration":3966,"isOffset":false,"isSlot":false,"src":"19567:7:13","valueSize":1}],"flags":["memory-safe"],"id":4000,"nodeType":"InlineAssembly","src":"19406:521:13"}]},"documentation":{"id":3957,"nodeType":"StructuredDocumentation","src":"18914:88:13","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":4002,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19016:9:13","nodeType":"FunctionDefinition","parameters":{"id":3964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3959,"mutability":"mutable","name":"b","nameLocation":"19048:1:13","nodeType":"VariableDeclaration","scope":4002,"src":"19035:14:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3958,"name":"bytes","nodeType":"ElementaryTypeName","src":"19035:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3961,"mutability":"mutable","name":"e","nameLocation":"19072:1:13","nodeType":"VariableDeclaration","scope":4002,"src":"19059:14:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3960,"name":"bytes","nodeType":"ElementaryTypeName","src":"19059:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3963,"mutability":"mutable","name":"m","nameLocation":"19096:1:13","nodeType":"VariableDeclaration","scope":4002,"src":"19083:14:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3962,"name":"bytes","nodeType":"ElementaryTypeName","src":"19083:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19025:78:13"},"returnParameters":{"id":3969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3966,"mutability":"mutable","name":"success","nameLocation":"19132:7:13","nodeType":"VariableDeclaration","scope":4002,"src":"19127:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3965,"name":"bool","nodeType":"ElementaryTypeName","src":"19127:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3968,"mutability":"mutable","name":"result","nameLocation":"19154:6:13","nodeType":"VariableDeclaration","scope":4002,"src":"19141:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3967,"name":"bytes","nodeType":"ElementaryTypeName","src":"19141:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19126:35:13"},"scope":4710,"src":"19007:926:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4034,"nodeType":"Block","src":"20088:176:13","statements":[{"body":{"id":4030,"nodeType":"Block","src":"20145:92:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4021,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4005,"src":"20163:9:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4023,"indexExpression":{"id":4022,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4011,"src":"20173:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20163:12:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20179:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20163:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4029,"nodeType":"IfStatement","src":"20159:68:13","trueBody":{"id":4028,"nodeType":"Block","src":"20182:45:13","statements":[{"expression":{"hexValue":"66616c7365","id":4026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20207:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4009,"id":4027,"nodeType":"Return","src":"20200:12:13"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4011,"src":"20118:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4015,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4005,"src":"20122:9:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20132:6:13","memberName":"length","nodeType":"MemberAccess","src":"20122:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20118:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4031,"initializationExpression":{"assignments":[4011],"declarations":[{"constant":false,"id":4011,"mutability":"mutable","name":"i","nameLocation":"20111:1:13","nodeType":"VariableDeclaration","scope":4031,"src":"20103:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4010,"name":"uint256","nodeType":"ElementaryTypeName","src":"20103:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4013,"initialValue":{"hexValue":"30","id":4012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20115:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20103:13:13"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20140:3:13","subExpression":{"id":4018,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4011,"src":"20142:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4020,"nodeType":"ExpressionStatement","src":"20140:3:13"},"nodeType":"ForStatement","src":"20098:139:13"},{"expression":{"hexValue":"74727565","id":4032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20253:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4009,"id":4033,"nodeType":"Return","src":"20246:11:13"}]},"documentation":{"id":4003,"nodeType":"StructuredDocumentation","src":"19939:72:13","text":" @dev Returns whether the provided byte array is zero."},"id":4035,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20025:10:13","nodeType":"FunctionDefinition","parameters":{"id":4006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4005,"mutability":"mutable","name":"byteArray","nameLocation":"20049:9:13","nodeType":"VariableDeclaration","scope":4035,"src":"20036:22:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4004,"name":"bytes","nodeType":"ElementaryTypeName","src":"20036:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20035:24:13"},"returnParameters":{"id":4009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4008,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4035,"src":"20082:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4007,"name":"bool","nodeType":"ElementaryTypeName","src":"20082:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20081:6:13"},"scope":4710,"src":"20016:248:13","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4253,"nodeType":"Block","src":"20624:5124:13","statements":[{"id":4252,"nodeType":"UncheckedBlock","src":"20634:5108:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4043,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"20728:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":4044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20733:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20728:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4049,"nodeType":"IfStatement","src":"20724:53:13","trueBody":{"id":4048,"nodeType":"Block","src":"20736:41:13","statements":[{"expression":{"id":4046,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"20761:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4042,"id":4047,"nodeType":"Return","src":"20754:8:13"}]}},{"assignments":[4051],"declarations":[{"constant":false,"id":4051,"mutability":"mutable","name":"aa","nameLocation":"21712:2:13","nodeType":"VariableDeclaration","scope":4252,"src":"21704:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4050,"name":"uint256","nodeType":"ElementaryTypeName","src":"21704:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4053,"initialValue":{"id":4052,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"21717:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21704:14:13"},{"assignments":[4055],"declarations":[{"constant":false,"id":4055,"mutability":"mutable","name":"xn","nameLocation":"21740:2:13","nodeType":"VariableDeclaration","scope":4252,"src":"21732:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4054,"name":"uint256","nodeType":"ElementaryTypeName","src":"21732:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4057,"initialValue":{"hexValue":"31","id":4056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21745:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21732:14:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4058,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"21765:2:13","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":4061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21772:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":4060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21777:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21772:8:13","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":4062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21771:10:13","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21765:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4073,"nodeType":"IfStatement","src":"21761:92:13","trueBody":{"id":4072,"nodeType":"Block","src":"21783:70:13","statements":[{"expression":{"id":4066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4064,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"21801:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":4065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21808:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21801:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4067,"nodeType":"ExpressionStatement","src":"21801:10:13"},{"expression":{"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4068,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"21829:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":4069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21836:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21829:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4071,"nodeType":"ExpressionStatement","src":"21829:9:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4074,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"21870:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":4077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21877:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":4076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21877:7:13","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":4078,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21876:9:13","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21870:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4089,"nodeType":"IfStatement","src":"21866:90:13","trueBody":{"id":4088,"nodeType":"Block","src":"21887:69:13","statements":[{"expression":{"id":4082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4080,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"21905:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":4081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21912:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21905:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4083,"nodeType":"ExpressionStatement","src":"21905:9:13"},{"expression":{"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4084,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"21932:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":4085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21939:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21932:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4087,"nodeType":"ExpressionStatement","src":"21932:9:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4090,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"21973:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":4093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21980:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21985:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21980:7:13","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":4094,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21979:9:13","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21973:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4105,"nodeType":"IfStatement","src":"21969:90:13","trueBody":{"id":4104,"nodeType":"Block","src":"21990:69:13","statements":[{"expression":{"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4096,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22008:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":4097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22015:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22008:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4099,"nodeType":"ExpressionStatement","src":"22008:9:13"},{"expression":{"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4100,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"22035:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":4101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22042:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22035:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4103,"nodeType":"ExpressionStatement","src":"22035:9:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4106,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22076:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":4109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22083:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22088:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22083:7:13","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":4110,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22082:9:13","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22076:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4121,"nodeType":"IfStatement","src":"22072:89:13","trueBody":{"id":4120,"nodeType":"Block","src":"22093:68:13","statements":[{"expression":{"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4112,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22111:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":4113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22118:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22111:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4115,"nodeType":"ExpressionStatement","src":"22111:9:13"},{"expression":{"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4116,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"22138:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":4117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22145:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22138:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4119,"nodeType":"ExpressionStatement","src":"22138:8:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4122,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22178:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":4125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22185:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22190:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22185:6:13","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":4126,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22184:8:13","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22178:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4137,"nodeType":"IfStatement","src":"22174:87:13","trueBody":{"id":4136,"nodeType":"Block","src":"22194:67:13","statements":[{"expression":{"id":4130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4128,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22212:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":4129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22219:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22212:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4131,"nodeType":"ExpressionStatement","src":"22212:8:13"},{"expression":{"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4132,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"22238:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":4133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22245:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22238:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4135,"nodeType":"ExpressionStatement","src":"22238:8:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4138,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22278:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":4141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22285:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22290:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22285:6:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":4142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22284:8:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22278:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4153,"nodeType":"IfStatement","src":"22274:87:13","trueBody":{"id":4152,"nodeType":"Block","src":"22294:67:13","statements":[{"expression":{"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4144,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22312:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22319:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22312:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4147,"nodeType":"ExpressionStatement","src":"22312:8:13"},{"expression":{"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4148,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"22338:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":4149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22345:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22338:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4151,"nodeType":"ExpressionStatement","src":"22338:8:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4154,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"22378:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":4157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22385:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22390:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22385:6:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":4158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22384:8:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22378:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4165,"nodeType":"IfStatement","src":"22374:61:13","trueBody":{"id":4164,"nodeType":"Block","src":"22394:41:13","statements":[{"expression":{"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4160,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"22412:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":4161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22419:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22412:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4163,"nodeType":"ExpressionStatement","src":"22412:8:13"}]}},{"expression":{"id":4173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4166,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"22855:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":4167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22861:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4168,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"22865:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22861:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4170,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22860:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22872:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22860:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22855:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4174,"nodeType":"ExpressionStatement","src":"22855:18:13"},{"expression":{"id":4184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4175,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24760:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4176,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24766:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4177,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"24771:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4178,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24775:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24771:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24766:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4181,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24765:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24782:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24765:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24760:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4185,"nodeType":"ExpressionStatement","src":"24760:23:13"},{"expression":{"id":4195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4186,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24869:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4187,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24875:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4188,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"24880:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4189,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24884:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24880:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24875:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4192,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24874:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24874:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24869:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4196,"nodeType":"ExpressionStatement","src":"24869:23:13"},{"expression":{"id":4206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4197,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24980:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4198,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24986:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4199,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"24991:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4200,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"24995:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24991:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24986:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24985:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25002:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24985:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24980:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4207,"nodeType":"ExpressionStatement","src":"24980:23:13"},{"expression":{"id":4217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4208,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25089:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4209,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25095:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4210,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"25100:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4211,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25104:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25100:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25095:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25094:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25094:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25089:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4218,"nodeType":"ExpressionStatement","src":"25089:23:13"},{"expression":{"id":4228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4219,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25199:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4220,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25205:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4221,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"25210:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4222,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25214:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25210:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25205:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4225,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25204:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25221:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25204:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25199:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4229,"nodeType":"ExpressionStatement","src":"25199:23:13"},{"expression":{"id":4239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4230,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25309:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4231,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25315:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4232,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"25320:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4233,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25324:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25320:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25315:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4236,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25314:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25331:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25314:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25309:23:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4240,"nodeType":"ExpressionStatement","src":"25309:23:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4241,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25698:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4244,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25719:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4245,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"25724:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4246,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"25728:2:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25724:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25719:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4242,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"25703:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25712:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"25703:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25703:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25698:33:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4042,"id":4251,"nodeType":"Return","src":"25691:40:13"}]}]},"documentation":{"id":4036,"nodeType":"StructuredDocumentation","src":"20270:292:13","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":4254,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20576:4:13","nodeType":"FunctionDefinition","parameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"a","nameLocation":"20589:1:13","nodeType":"VariableDeclaration","scope":4254,"src":"20581:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4037,"name":"uint256","nodeType":"ElementaryTypeName","src":"20581:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20580:11:13"},"returnParameters":{"id":4042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4254,"src":"20615:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4040,"name":"uint256","nodeType":"ElementaryTypeName","src":"20615:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20614:9:13"},"scope":4710,"src":"20567:5181:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4287,"nodeType":"Block","src":"25921:171:13","statements":[{"id":4286,"nodeType":"UncheckedBlock","src":"25931:155:13","statements":[{"assignments":[4266],"declarations":[{"constant":false,"id":4266,"mutability":"mutable","name":"result","nameLocation":"25963:6:13","nodeType":"VariableDeclaration","scope":4286,"src":"25955:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4265,"name":"uint256","nodeType":"ElementaryTypeName","src":"25955:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4270,"initialValue":{"arguments":[{"id":4268,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"25977:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4267,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[4254,4288],"referencedDeclaration":4254,"src":"25972:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25972:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25955:24:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"26000:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4275,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"26042:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}],"id":4274,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"26025:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3101_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4277,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"26055:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4278,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"26064:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4280,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"26073:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26025:49:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4272,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"26009:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26018:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"26009:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26009:66:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26000:75:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4264,"id":4285,"nodeType":"Return","src":"25993:82:13"}]}]},"documentation":{"id":4255,"nodeType":"StructuredDocumentation","src":"25754:86:13","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":4288,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25854:4:13","nodeType":"FunctionDefinition","parameters":{"id":4261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4257,"mutability":"mutable","name":"a","nameLocation":"25867:1:13","nodeType":"VariableDeclaration","scope":4288,"src":"25859:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4256,"name":"uint256","nodeType":"ElementaryTypeName","src":"25859:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4260,"mutability":"mutable","name":"rounding","nameLocation":"25879:8:13","nodeType":"VariableDeclaration","scope":4288,"src":"25870:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"},"typeName":{"id":4259,"nodeType":"UserDefinedTypeName","pathNode":{"id":4258,"name":"Rounding","nameLocations":["25870:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":3101,"src":"25870:8:13"},"referencedDeclaration":3101,"src":"25870:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25858:30:13"},"returnParameters":{"id":4264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4288,"src":"25912:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4262,"name":"uint256","nodeType":"ElementaryTypeName","src":"25912:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25911:9:13"},"scope":4710,"src":"25845:247:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4378,"nodeType":"Block","src":"26281:2334:13","statements":[{"expression":{"id":4305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4296,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26363:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4299,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4291,"src":"26383:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26387:34:13","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26383:38:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4297,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"26367:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26376:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"26367:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26367:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26426:1:13","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26367:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26363:64:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4306,"nodeType":"ExpressionStatement","src":"26363:64:13"},{"expression":{"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4307,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26503:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4310,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4291,"src":"26525:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4311,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26530:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26525:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4313,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26524:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26535:18:13","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26524:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4308,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"26508:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26517:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"26508:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26508:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":4317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26558:1:13","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26508:51:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26503:56:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4320,"nodeType":"ExpressionStatement","src":"26503:56:13"},{"expression":{"id":4333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4321,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26634:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4324,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4291,"src":"26656:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4325,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26661:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26656:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26655:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":4328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26666:10:13","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26655:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4322,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"26639:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26648:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"26639:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26639:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":4331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26681:1:13","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26639:43:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26634:48:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4334,"nodeType":"ExpressionStatement","src":"26634:48:13"},{"expression":{"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4335,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26757:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4338,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4291,"src":"26779:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4339,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26784:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26779:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4341,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26778:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":4342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26789:6:13","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26778:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4336,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"26762:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26771:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"26762:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26762:34:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26800:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26762:39:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26757:44:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4348,"nodeType":"ExpressionStatement","src":"26757:44:13"},{"expression":{"id":4361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4349,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26874:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4352,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4291,"src":"26896:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4353,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26901:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26896:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4355,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26895:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":4356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26906:4:13","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26895:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4350,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"26879:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26888:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"26879:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26879:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26915:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26879:37:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26874:42:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4362,"nodeType":"ExpressionStatement","src":"26874:42:13"},{"expression":{"id":4375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4363,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"26988:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4366,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4291,"src":"27010:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4367,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"27015:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27010:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27009:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":4370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27020:3:13","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27009:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4364,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"26993:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27002:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"26993:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26993:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27028:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26993:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26988:41:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4376,"nodeType":"ExpressionStatement","src":"26988:41:13"},{"AST":{"nativeSrc":"28490:119:13","nodeType":"YulBlock","src":"28490:119:13","statements":[{"nativeSrc":"28504:95:13","nodeType":"YulAssignment","src":"28504:95:13","value":{"arguments":[{"name":"r","nativeSrc":"28512:1:13","nodeType":"YulIdentifier","src":"28512:1:13"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28524:1:13","nodeType":"YulIdentifier","src":"28524:1:13"},{"name":"x","nativeSrc":"28527:1:13","nodeType":"YulIdentifier","src":"28527:1:13"}],"functionName":{"name":"shr","nativeSrc":"28520:3:13","nodeType":"YulIdentifier","src":"28520:3:13"},"nativeSrc":"28520:9:13","nodeType":"YulFunctionCall","src":"28520:9:13"},{"kind":"number","nativeSrc":"28531:66:13","nodeType":"YulLiteral","src":"28531:66:13","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28515:4:13","nodeType":"YulIdentifier","src":"28515:4:13"},"nativeSrc":"28515:83:13","nodeType":"YulFunctionCall","src":"28515:83:13"}],"functionName":{"name":"or","nativeSrc":"28509:2:13","nodeType":"YulIdentifier","src":"28509:2:13"},"nativeSrc":"28509:90:13","nodeType":"YulFunctionCall","src":"28509:90:13"},"variableNames":[{"name":"r","nativeSrc":"28504:1:13","nodeType":"YulIdentifier","src":"28504:1:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4294,"isOffset":false,"isSlot":false,"src":"28504:1:13","valueSize":1},{"declaration":4294,"isOffset":false,"isSlot":false,"src":"28512:1:13","valueSize":1},{"declaration":4294,"isOffset":false,"isSlot":false,"src":"28524:1:13","valueSize":1},{"declaration":4291,"isOffset":false,"isSlot":false,"src":"28527:1:13","valueSize":1}],"flags":["memory-safe"],"id":4377,"nodeType":"InlineAssembly","src":"28465:144:13"}]},"documentation":{"id":4289,"nodeType":"StructuredDocumentation","src":"26098:119:13","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4379,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26231:4:13","nodeType":"FunctionDefinition","parameters":{"id":4292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4291,"mutability":"mutable","name":"x","nameLocation":"26244:1:13","nodeType":"VariableDeclaration","scope":4379,"src":"26236:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4290,"name":"uint256","nodeType":"ElementaryTypeName","src":"26236:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26235:11:13"},"returnParameters":{"id":4295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4294,"mutability":"mutable","name":"r","nameLocation":"26278:1:13","nodeType":"VariableDeclaration","scope":4379,"src":"26270:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4293,"name":"uint256","nodeType":"ElementaryTypeName","src":"26270:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26269:11:13"},"scope":4710,"src":"26222:2393:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4412,"nodeType":"Block","src":"28848:175:13","statements":[{"id":4411,"nodeType":"UncheckedBlock","src":"28858:159:13","statements":[{"assignments":[4391],"declarations":[{"constant":false,"id":4391,"mutability":"mutable","name":"result","nameLocation":"28890:6:13","nodeType":"VariableDeclaration","scope":4411,"src":"28882:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4390,"name":"uint256","nodeType":"ElementaryTypeName","src":"28882:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4395,"initialValue":{"arguments":[{"id":4393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"28904:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4392,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[4379,4413],"referencedDeclaration":4379,"src":"28899:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28899:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28882:28:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4396,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4391,"src":"28931:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4400,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4385,"src":"28973:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}],"id":4399,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"28956:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3101_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28986:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4403,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4391,"src":"28991:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4405,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"29000:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28956:49:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4397,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"28940:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28949:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"28940:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28940:66:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28931:75:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4389,"id":4410,"nodeType":"Return","src":"28924:82:13"}]}]},"documentation":{"id":4380,"nodeType":"StructuredDocumentation","src":"28621:142:13","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4413,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28777:4:13","nodeType":"FunctionDefinition","parameters":{"id":4386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4382,"mutability":"mutable","name":"value","nameLocation":"28790:5:13","nodeType":"VariableDeclaration","scope":4413,"src":"28782:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4381,"name":"uint256","nodeType":"ElementaryTypeName","src":"28782:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4385,"mutability":"mutable","name":"rounding","nameLocation":"28806:8:13","nodeType":"VariableDeclaration","scope":4413,"src":"28797:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"},"typeName":{"id":4384,"nodeType":"UserDefinedTypeName","pathNode":{"id":4383,"name":"Rounding","nameLocations":["28797:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":3101,"src":"28797:8:13"},"referencedDeclaration":3101,"src":"28797:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28781:34:13"},"returnParameters":{"id":4389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4413,"src":"28839:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4387,"name":"uint256","nodeType":"ElementaryTypeName","src":"28839:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28838:9:13"},"scope":4710,"src":"28768:255:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4541,"nodeType":"Block","src":"29216:854:13","statements":[{"assignments":[4422],"declarations":[{"constant":false,"id":4422,"mutability":"mutable","name":"result","nameLocation":"29234:6:13","nodeType":"VariableDeclaration","scope":4541,"src":"29226:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4421,"name":"uint256","nodeType":"ElementaryTypeName","src":"29226:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4424,"initialValue":{"hexValue":"30","id":4423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29243:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29226:18:13"},{"id":4538,"nodeType":"UncheckedBlock","src":"29254:787:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29282:5:13","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":4428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29291:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29297:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29291:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29282:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4441,"nodeType":"IfStatement","src":"29278:103:13","trueBody":{"id":4440,"nodeType":"Block","src":"29301:80:13","statements":[{"expression":{"id":4434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4430,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29319:5:13","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":4433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29328:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29334:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29328:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29319:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4435,"nodeType":"ExpressionStatement","src":"29319:17:13"},{"expression":{"id":4438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4436,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"29354:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":4437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29364:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29354:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4439,"nodeType":"ExpressionStatement","src":"29354:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29398:5:13","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":4445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29407:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29413:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29407:8:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29398:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4458,"nodeType":"IfStatement","src":"29394:103:13","trueBody":{"id":4457,"nodeType":"Block","src":"29417:80:13","statements":[{"expression":{"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4447,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29435:5:13","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":4450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29444:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29450:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29444:8:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29435:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4452,"nodeType":"ExpressionStatement","src":"29435:17:13"},{"expression":{"id":4455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4453,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"29470:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29480:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29470:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4456,"nodeType":"ExpressionStatement","src":"29470:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29514:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29523:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29529:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29523:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29514:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4475,"nodeType":"IfStatement","src":"29510:103:13","trueBody":{"id":4474,"nodeType":"Block","src":"29533:80:13","statements":[{"expression":{"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29551:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29566:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29560:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29551:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4469,"nodeType":"ExpressionStatement","src":"29551:17:13"},{"expression":{"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4470,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"29586:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":4471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29596:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29586:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4473,"nodeType":"ExpressionStatement","src":"29586:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29630:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29639:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29639:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29630:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4492,"nodeType":"IfStatement","src":"29626:100:13","trueBody":{"id":4491,"nodeType":"Block","src":"29648:78:13","statements":[{"expression":{"id":4485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4481,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29666:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29675:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29675:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29666:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4486,"nodeType":"ExpressionStatement","src":"29666:16:13"},{"expression":{"id":4489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4487,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"29700:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":4488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29710:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29700:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4490,"nodeType":"ExpressionStatement","src":"29700:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29743:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29752:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29758:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29752:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29743:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4509,"nodeType":"IfStatement","src":"29739:100:13","trueBody":{"id":4508,"nodeType":"Block","src":"29761:78:13","statements":[{"expression":{"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29779:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29788:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29794:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29788:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29779:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4503,"nodeType":"ExpressionStatement","src":"29779:16:13"},{"expression":{"id":4506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4504,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"29813:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":4505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29823:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29813:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4507,"nodeType":"ExpressionStatement","src":"29813:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29856:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29865:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29871:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29865:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29856:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4526,"nodeType":"IfStatement","src":"29852:100:13","trueBody":{"id":4525,"nodeType":"Block","src":"29874:78:13","statements":[{"expression":{"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29892:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29901:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29907:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29901:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29892:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4520,"nodeType":"ExpressionStatement","src":"29892:16:13"},{"expression":{"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4521,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"29926:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":4522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29936:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29926:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4524,"nodeType":"ExpressionStatement","src":"29926:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"29969:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":4530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29978:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":4529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29984:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29978:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29969:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4537,"nodeType":"IfStatement","src":"29965:66:13","trueBody":{"id":4536,"nodeType":"Block","src":"29987:44:13","statements":[{"expression":{"id":4534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4532,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"30005:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30015:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30005:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4535,"nodeType":"ExpressionStatement","src":"30005:11:13"}]}}]},{"expression":{"id":4539,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"30057:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4420,"id":4540,"nodeType":"Return","src":"30050:13:13"}]},"documentation":{"id":4414,"nodeType":"StructuredDocumentation","src":"29029:120:13","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4542,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29163:5:13","nodeType":"FunctionDefinition","parameters":{"id":4417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4416,"mutability":"mutable","name":"value","nameLocation":"29177:5:13","nodeType":"VariableDeclaration","scope":4542,"src":"29169:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4415,"name":"uint256","nodeType":"ElementaryTypeName","src":"29169:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29168:15:13"},"returnParameters":{"id":4420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4542,"src":"29207:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4418,"name":"uint256","nodeType":"ElementaryTypeName","src":"29207:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29206:9:13"},"scope":4710,"src":"29154:916:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4575,"nodeType":"Block","src":"30305:177:13","statements":[{"id":4574,"nodeType":"UncheckedBlock","src":"30315:161:13","statements":[{"assignments":[4554],"declarations":[{"constant":false,"id":4554,"mutability":"mutable","name":"result","nameLocation":"30347:6:13","nodeType":"VariableDeclaration","scope":4574,"src":"30339:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4553,"name":"uint256","nodeType":"ElementaryTypeName","src":"30339:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4558,"initialValue":{"arguments":[{"id":4556,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4545,"src":"30362:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4555,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[4542,4576],"referencedDeclaration":4542,"src":"30356:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30356:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30339:29:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"30389:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4563,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"30431:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}],"id":4562,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"30414:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3101_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30444:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":4566,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"30450:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4545,"src":"30459:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30414:50:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4560,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"30398:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30407:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"30398:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30398:67:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30389:76:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4552,"id":4573,"nodeType":"Return","src":"30382:83:13"}]}]},"documentation":{"id":4543,"nodeType":"StructuredDocumentation","src":"30076:143:13","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4576,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30233:5:13","nodeType":"FunctionDefinition","parameters":{"id":4549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4545,"mutability":"mutable","name":"value","nameLocation":"30247:5:13","nodeType":"VariableDeclaration","scope":4576,"src":"30239:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4544,"name":"uint256","nodeType":"ElementaryTypeName","src":"30239:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4548,"mutability":"mutable","name":"rounding","nameLocation":"30263:8:13","nodeType":"VariableDeclaration","scope":4576,"src":"30254:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"},"typeName":{"id":4547,"nodeType":"UserDefinedTypeName","pathNode":{"id":4546,"name":"Rounding","nameLocations":["30254:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":3101,"src":"30254:8:13"},"referencedDeclaration":3101,"src":"30254:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30238:34:13"},"returnParameters":{"id":4552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4551,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4576,"src":"30296:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4550,"name":"uint256","nodeType":"ElementaryTypeName","src":"30296:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30295:9:13"},"scope":4710,"src":"30224:258:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4652,"nodeType":"Block","src":"30800:675:13","statements":[{"expression":{"id":4593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4584,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"30882:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4587,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"30902:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30906:34:13","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30902:38:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4585,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"30886:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30895:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"30886:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30886:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30945:1:13","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30886:60:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30882:64:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4594,"nodeType":"ExpressionStatement","src":"30882:64:13"},{"expression":{"id":4607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4595,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31022:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4598,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"31044:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4599,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31049:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31044:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4601,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31043:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31054:18:13","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31043:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4596,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"31027:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31036:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"31027:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31027:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":4605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31077:1:13","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31027:51:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31022:56:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4608,"nodeType":"ExpressionStatement","src":"31022:56:13"},{"expression":{"id":4621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4609,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31153:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4612,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"31175:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4613,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31180:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31175:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4615,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31174:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":4616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31185:10:13","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31174:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4610,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"31158:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31167:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"31158:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31158:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":4619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31200:1:13","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31158:43:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31153:48:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4622,"nodeType":"ExpressionStatement","src":"31153:48:13"},{"expression":{"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4623,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31276:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4626,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"31298:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4627,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31303:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31298:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4629,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31297:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":4630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31308:6:13","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31297:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4624,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"31281:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31290:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"31281:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31281:34:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31281:39:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31276:44:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4636,"nodeType":"ExpressionStatement","src":"31276:44:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4637,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31426:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":4638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31431:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31426:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4640,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31425:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4643,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"31453:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4644,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"31458:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31453:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4646,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31452:8:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":4647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31463:4:13","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31452:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4641,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"31436:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31445:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"31436:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31436:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31425:43:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4583,"id":4651,"nodeType":"Return","src":"31418:50:13"}]},"documentation":{"id":4577,"nodeType":"StructuredDocumentation","src":"30488:246:13","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":4653,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30748:6:13","nodeType":"FunctionDefinition","parameters":{"id":4580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4579,"mutability":"mutable","name":"x","nameLocation":"30763:1:13","nodeType":"VariableDeclaration","scope":4653,"src":"30755:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4578,"name":"uint256","nodeType":"ElementaryTypeName","src":"30755:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30754:11:13"},"returnParameters":{"id":4583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4582,"mutability":"mutable","name":"r","nameLocation":"30797:1:13","nodeType":"VariableDeclaration","scope":4653,"src":"30789:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4581,"name":"uint256","nodeType":"ElementaryTypeName","src":"30789:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30788:11:13"},"scope":4710,"src":"30739:736:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4689,"nodeType":"Block","src":"31712:184:13","statements":[{"id":4688,"nodeType":"UncheckedBlock","src":"31722:168:13","statements":[{"assignments":[4665],"declarations":[{"constant":false,"id":4665,"mutability":"mutable","name":"result","nameLocation":"31754:6:13","nodeType":"VariableDeclaration","scope":4688,"src":"31746:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4664,"name":"uint256","nodeType":"ElementaryTypeName","src":"31746:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4669,"initialValue":{"arguments":[{"id":4667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4656,"src":"31770:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4666,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[4653,4690],"referencedDeclaration":4653,"src":"31763:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31763:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31746:30:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4670,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"31797:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4674,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"31839:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}],"id":4673,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"31822:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3101_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31852:1:13","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":4679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4677,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"31858:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31858:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4680,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31857:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4656,"src":"31873:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31822:56:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4671,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"31806:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31815:6:13","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"31806:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31806:73:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31797:82:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4663,"id":4687,"nodeType":"Return","src":"31790:89:13"}]}]},"documentation":{"id":4654,"nodeType":"StructuredDocumentation","src":"31481:144:13","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4690,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31639:6:13","nodeType":"FunctionDefinition","parameters":{"id":4660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4656,"mutability":"mutable","name":"value","nameLocation":"31654:5:13","nodeType":"VariableDeclaration","scope":4690,"src":"31646:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4655,"name":"uint256","nodeType":"ElementaryTypeName","src":"31646:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4659,"mutability":"mutable","name":"rounding","nameLocation":"31670:8:13","nodeType":"VariableDeclaration","scope":4690,"src":"31661:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"},"typeName":{"id":4658,"nodeType":"UserDefinedTypeName","pathNode":{"id":4657,"name":"Rounding","nameLocations":["31661:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":3101,"src":"31661:8:13"},"referencedDeclaration":3101,"src":"31661:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31645:34:13"},"returnParameters":{"id":4663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4690,"src":"31703:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4661,"name":"uint256","nodeType":"ElementaryTypeName","src":"31703:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31702:9:13"},"scope":4710,"src":"31630:266:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4708,"nodeType":"Block","src":"32094:48:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4701,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"32117:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}],"id":4700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32111:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4699,"name":"uint8","nodeType":"ElementaryTypeName","src":"32111:5:13","typeDescriptions":{}}},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32111:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":4703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32129:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32111:19:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":4705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32134:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32111:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4698,"id":4707,"nodeType":"Return","src":"32104:31:13"}]},"documentation":{"id":4691,"nodeType":"StructuredDocumentation","src":"31902:113:13","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":4709,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32029:16:13","nodeType":"FunctionDefinition","parameters":{"id":4695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4694,"mutability":"mutable","name":"rounding","nameLocation":"32055:8:13","nodeType":"VariableDeclaration","scope":4709,"src":"32046:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"},"typeName":{"id":4693,"nodeType":"UserDefinedTypeName","pathNode":{"id":4692,"name":"Rounding","nameLocations":["32046:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":3101,"src":"32046:8:13"},"referencedDeclaration":3101,"src":"32046:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3101","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32045:19:13"},"returnParameters":{"id":4698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4709,"src":"32088:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4696,"name":"bool","nodeType":"ElementaryTypeName","src":"32088:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32087:6:13"},"scope":4710,"src":"32020:122:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4711,"src":"281:31863:13","usedErrors":[],"usedEvents":[]}],"src":"103:32042:13"},"id":13},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[6475]},"id":6476,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4712,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":4713,"nodeType":"StructuredDocumentation","src":"218:550:14","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":6475,"linearizedBaseContracts":[6475],"name":"SafeCast","nameLocation":"777:8:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4714,"nodeType":"StructuredDocumentation","src":"792:68:14","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":4720,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:14","nodeType":"ErrorDefinition","parameters":{"id":4719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4716,"mutability":"mutable","name":"bits","nameLocation":"908:4:14","nodeType":"VariableDeclaration","scope":4720,"src":"902:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4715,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4718,"mutability":"mutable","name":"value","nameLocation":"922:5:14","nodeType":"VariableDeclaration","scope":4720,"src":"914:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4717,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:14"},"src":"865:64:14"},{"documentation":{"id":4721,"nodeType":"StructuredDocumentation","src":"935:75:14","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":4725,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:14","nodeType":"ErrorDefinition","parameters":{"id":4724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4723,"mutability":"mutable","name":"value","nameLocation":"1056:5:14","nodeType":"VariableDeclaration","scope":4725,"src":"1049:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4722,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:14"},"src":"1015:48:14"},{"documentation":{"id":4726,"nodeType":"StructuredDocumentation","src":"1069:67:14","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":4732,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:14","nodeType":"ErrorDefinition","parameters":{"id":4731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4728,"mutability":"mutable","name":"bits","nameLocation":"1183:4:14","nodeType":"VariableDeclaration","scope":4732,"src":"1177:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4727,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4730,"mutability":"mutable","name":"value","nameLocation":"1196:5:14","nodeType":"VariableDeclaration","scope":4732,"src":"1189:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4729,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:14"},"src":"1141:62:14"},{"documentation":{"id":4733,"nodeType":"StructuredDocumentation","src":"1209:75:14","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":4737,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:14","nodeType":"ErrorDefinition","parameters":{"id":4736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4735,"mutability":"mutable","name":"value","nameLocation":"1331:5:14","nodeType":"VariableDeclaration","scope":4737,"src":"1323:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4734,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:14"},"src":"1289:49:14"},{"body":{"id":4764,"nodeType":"Block","src":"1695:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"1709:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":4747,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":4746,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":4750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:14","memberName":"max","nodeType":"MemberAccess","src":"1717:17:14","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4758,"nodeType":"IfStatement","src":"1705:105:14","trueBody":{"id":4757,"nodeType":"Block","src":"1736:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":4753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:14","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":4754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"1793:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4752,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"1757:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4756,"nodeType":"RevertStatement","src":"1750:49:14"}]}},{"expression":{"arguments":[{"id":4761,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"1834:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":4759,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:14","typeDescriptions":{}}},"id":4762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":4744,"id":4763,"nodeType":"Return","src":"1819:21:14"}]},"documentation":{"id":4738,"nodeType":"StructuredDocumentation","src":"1344:280:14","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":4765,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:14","nodeType":"FunctionDefinition","parameters":{"id":4741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4740,"mutability":"mutable","name":"value","nameLocation":"1656:5:14","nodeType":"VariableDeclaration","scope":4765,"src":"1648:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4739,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:14"},"returnParameters":{"id":4744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4765,"src":"1686:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":4742,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:14","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:14"},"scope":6475,"src":"1629:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4792,"nodeType":"Block","src":"2204:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4773,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4768,"src":"2218:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":4775,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":4774,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":4778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:14","memberName":"max","nodeType":"MemberAccess","src":"2226:17:14","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4786,"nodeType":"IfStatement","src":"2214:105:14","trueBody":{"id":4785,"nodeType":"Block","src":"2245:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":4781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:14","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":4782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4768,"src":"2302:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4780,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"2266:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4784,"nodeType":"RevertStatement","src":"2259:49:14"}]}},{"expression":{"arguments":[{"id":4789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4768,"src":"2343:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":4787,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:14","typeDescriptions":{}}},"id":4790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":4772,"id":4791,"nodeType":"Return","src":"2328:21:14"}]},"documentation":{"id":4766,"nodeType":"StructuredDocumentation","src":"1853:280:14","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":4793,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:14","nodeType":"FunctionDefinition","parameters":{"id":4769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4768,"mutability":"mutable","name":"value","nameLocation":"2165:5:14","nodeType":"VariableDeclaration","scope":4793,"src":"2157:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4767,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:14"},"returnParameters":{"id":4772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4793,"src":"2195:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":4770,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:14","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:14"},"scope":6475,"src":"2138:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4820,"nodeType":"Block","src":"2713:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4796,"src":"2727:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":4803,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":4802,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":4806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:14","memberName":"max","nodeType":"MemberAccess","src":"2735:17:14","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4814,"nodeType":"IfStatement","src":"2723:105:14","trueBody":{"id":4813,"nodeType":"Block","src":"2754:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":4809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:14","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":4810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4796,"src":"2811:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4808,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"2775:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4812,"nodeType":"RevertStatement","src":"2768:49:14"}]}},{"expression":{"arguments":[{"id":4817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4796,"src":"2852:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":4815,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:14","typeDescriptions":{}}},"id":4818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":4800,"id":4819,"nodeType":"Return","src":"2837:21:14"}]},"documentation":{"id":4794,"nodeType":"StructuredDocumentation","src":"2362:280:14","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":4821,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:14","nodeType":"FunctionDefinition","parameters":{"id":4797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4796,"mutability":"mutable","name":"value","nameLocation":"2674:5:14","nodeType":"VariableDeclaration","scope":4821,"src":"2666:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4795,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:14"},"returnParameters":{"id":4800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4821,"src":"2704:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":4798,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:14","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:14"},"scope":6475,"src":"2647:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4848,"nodeType":"Block","src":"3222:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"3236:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":4831,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":4830,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":4834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:14","memberName":"max","nodeType":"MemberAccess","src":"3244:17:14","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4842,"nodeType":"IfStatement","src":"3232:105:14","trueBody":{"id":4841,"nodeType":"Block","src":"3263:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":4837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:14","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":4838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"3320:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4836,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"3284:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4840,"nodeType":"RevertStatement","src":"3277:49:14"}]}},{"expression":{"arguments":[{"id":4845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"3361:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":4843,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:14","typeDescriptions":{}}},"id":4846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":4828,"id":4847,"nodeType":"Return","src":"3346:21:14"}]},"documentation":{"id":4822,"nodeType":"StructuredDocumentation","src":"2871:280:14","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":4849,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:14","nodeType":"FunctionDefinition","parameters":{"id":4825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4824,"mutability":"mutable","name":"value","nameLocation":"3183:5:14","nodeType":"VariableDeclaration","scope":4849,"src":"3175:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4823,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:14"},"returnParameters":{"id":4828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4849,"src":"3213:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4826,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:14","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:14"},"scope":6475,"src":"3156:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4876,"nodeType":"Block","src":"3731:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"3745:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":4859,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":4858,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":4862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:14","memberName":"max","nodeType":"MemberAccess","src":"3753:17:14","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4870,"nodeType":"IfStatement","src":"3741:105:14","trueBody":{"id":4869,"nodeType":"Block","src":"3772:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":4865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:14","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":4866,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"3829:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4864,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"3793:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4868,"nodeType":"RevertStatement","src":"3786:49:14"}]}},{"expression":{"arguments":[{"id":4873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"3870:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":4871,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:14","typeDescriptions":{}}},"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":4856,"id":4875,"nodeType":"Return","src":"3855:21:14"}]},"documentation":{"id":4850,"nodeType":"StructuredDocumentation","src":"3380:280:14","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":4877,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:14","nodeType":"FunctionDefinition","parameters":{"id":4853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4852,"mutability":"mutable","name":"value","nameLocation":"3692:5:14","nodeType":"VariableDeclaration","scope":4877,"src":"3684:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4851,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:14"},"returnParameters":{"id":4856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4877,"src":"3722:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":4854,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:14","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:14"},"scope":6475,"src":"3665:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4904,"nodeType":"Block","src":"4240:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4885,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"4254:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":4887,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":4886,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":4890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:14","memberName":"max","nodeType":"MemberAccess","src":"4262:17:14","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4898,"nodeType":"IfStatement","src":"4250:105:14","trueBody":{"id":4897,"nodeType":"Block","src":"4281:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":4893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:14","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":4894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"4338:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4892,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"4302:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4896,"nodeType":"RevertStatement","src":"4295:49:14"}]}},{"expression":{"arguments":[{"id":4901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"4379:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":4899,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:14","typeDescriptions":{}}},"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":4884,"id":4903,"nodeType":"Return","src":"4364:21:14"}]},"documentation":{"id":4878,"nodeType":"StructuredDocumentation","src":"3889:280:14","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":4905,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:14","nodeType":"FunctionDefinition","parameters":{"id":4881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4880,"mutability":"mutable","name":"value","nameLocation":"4201:5:14","nodeType":"VariableDeclaration","scope":4905,"src":"4193:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4879,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:14"},"returnParameters":{"id":4884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4905,"src":"4231:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":4882,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:14","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:14"},"scope":6475,"src":"4174:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4932,"nodeType":"Block","src":"4749:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4913,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4908,"src":"4763:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":4915,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":4914,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":4918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:14","memberName":"max","nodeType":"MemberAccess","src":"4771:17:14","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4926,"nodeType":"IfStatement","src":"4759:105:14","trueBody":{"id":4925,"nodeType":"Block","src":"4790:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":4921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:14","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":4922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4908,"src":"4847:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4920,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"4811:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4924,"nodeType":"RevertStatement","src":"4804:49:14"}]}},{"expression":{"arguments":[{"id":4929,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4908,"src":"4888:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":4927,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:14","typeDescriptions":{}}},"id":4930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":4912,"id":4931,"nodeType":"Return","src":"4873:21:14"}]},"documentation":{"id":4906,"nodeType":"StructuredDocumentation","src":"4398:280:14","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":4933,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:14","nodeType":"FunctionDefinition","parameters":{"id":4909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4908,"mutability":"mutable","name":"value","nameLocation":"4710:5:14","nodeType":"VariableDeclaration","scope":4933,"src":"4702:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4907,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:14"},"returnParameters":{"id":4912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4933,"src":"4740:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":4910,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:14","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:14"},"scope":6475,"src":"4683:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4960,"nodeType":"Block","src":"5258:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4936,"src":"5272:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":4943,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":4942,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":4946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:14","memberName":"max","nodeType":"MemberAccess","src":"5280:17:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4954,"nodeType":"IfStatement","src":"5268:105:14","trueBody":{"id":4953,"nodeType":"Block","src":"5299:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":4949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:14","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":4950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4936,"src":"5356:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4948,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"5320:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4952,"nodeType":"RevertStatement","src":"5313:49:14"}]}},{"expression":{"arguments":[{"id":4957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4936,"src":"5397:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":4955,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:14","typeDescriptions":{}}},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":4940,"id":4959,"nodeType":"Return","src":"5382:21:14"}]},"documentation":{"id":4934,"nodeType":"StructuredDocumentation","src":"4907:280:14","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":4961,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:14","nodeType":"FunctionDefinition","parameters":{"id":4937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4936,"mutability":"mutable","name":"value","nameLocation":"5219:5:14","nodeType":"VariableDeclaration","scope":4961,"src":"5211:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4935,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:14"},"returnParameters":{"id":4940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4961,"src":"5249:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":4938,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:14"},"scope":6475,"src":"5192:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4988,"nodeType":"Block","src":"5767:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4964,"src":"5781:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":4971,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":4970,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":4974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:14","memberName":"max","nodeType":"MemberAccess","src":"5789:17:14","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4982,"nodeType":"IfStatement","src":"5777:105:14","trueBody":{"id":4981,"nodeType":"Block","src":"5808:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":4977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:14","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":4978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4964,"src":"5865:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4976,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"5829:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4980,"nodeType":"RevertStatement","src":"5822:49:14"}]}},{"expression":{"arguments":[{"id":4985,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4964,"src":"5906:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":4983,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:14","typeDescriptions":{}}},"id":4986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":4968,"id":4987,"nodeType":"Return","src":"5891:21:14"}]},"documentation":{"id":4962,"nodeType":"StructuredDocumentation","src":"5416:280:14","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":4989,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:14","nodeType":"FunctionDefinition","parameters":{"id":4965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4964,"mutability":"mutable","name":"value","nameLocation":"5728:5:14","nodeType":"VariableDeclaration","scope":4989,"src":"5720:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4963,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:14"},"returnParameters":{"id":4968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4989,"src":"5758:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":4966,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:14","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:14"},"scope":6475,"src":"5701:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5016,"nodeType":"Block","src":"6276:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"6290:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":4999,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":4998,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":5002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:14","memberName":"max","nodeType":"MemberAccess","src":"6298:17:14","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5010,"nodeType":"IfStatement","src":"6286:105:14","trueBody":{"id":5009,"nodeType":"Block","src":"6317:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":5005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:14","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":5006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"6374:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5004,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"6338:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5008,"nodeType":"RevertStatement","src":"6331:49:14"}]}},{"expression":{"arguments":[{"id":5013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"6415:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5011,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:14","typeDescriptions":{}}},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":4996,"id":5015,"nodeType":"Return","src":"6400:21:14"}]},"documentation":{"id":4990,"nodeType":"StructuredDocumentation","src":"5925:280:14","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":5017,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:14","nodeType":"FunctionDefinition","parameters":{"id":4993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4992,"mutability":"mutable","name":"value","nameLocation":"6237:5:14","nodeType":"VariableDeclaration","scope":5017,"src":"6229:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4991,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:14"},"returnParameters":{"id":4996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5017,"src":"6267:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":4994,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:14","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:14"},"scope":6475,"src":"6210:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5044,"nodeType":"Block","src":"6785:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5020,"src":"6799:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5027,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":5026,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":5030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:14","memberName":"max","nodeType":"MemberAccess","src":"6807:17:14","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5038,"nodeType":"IfStatement","src":"6795:105:14","trueBody":{"id":5037,"nodeType":"Block","src":"6826:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":5033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:14","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":5034,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5020,"src":"6883:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5032,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"6847:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5036,"nodeType":"RevertStatement","src":"6840:49:14"}]}},{"expression":{"arguments":[{"id":5041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5020,"src":"6924:5:14","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":"6916:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5039,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:14","typeDescriptions":{}}},"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":5024,"id":5043,"nodeType":"Return","src":"6909:21:14"}]},"documentation":{"id":5018,"nodeType":"StructuredDocumentation","src":"6434:280:14","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":5045,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:14","nodeType":"FunctionDefinition","parameters":{"id":5021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5020,"mutability":"mutable","name":"value","nameLocation":"6746:5:14","nodeType":"VariableDeclaration","scope":5045,"src":"6738:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5019,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:14"},"returnParameters":{"id":5024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5045,"src":"6776:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":5022,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:14","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:14"},"scope":6475,"src":"6719:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5072,"nodeType":"Block","src":"7294:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5053,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5048,"src":"7308:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5055,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5054,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:14","memberName":"max","nodeType":"MemberAccess","src":"7316:17:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5066,"nodeType":"IfStatement","src":"7304:105:14","trueBody":{"id":5065,"nodeType":"Block","src":"7335:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":5061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:14","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":5062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5048,"src":"7392:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5060,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"7356:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5064,"nodeType":"RevertStatement","src":"7349:49:14"}]}},{"expression":{"arguments":[{"id":5069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5048,"src":"7433:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5067,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:14","typeDescriptions":{}}},"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5052,"id":5071,"nodeType":"Return","src":"7418:21:14"}]},"documentation":{"id":5046,"nodeType":"StructuredDocumentation","src":"6943:280:14","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":5073,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:14","nodeType":"FunctionDefinition","parameters":{"id":5049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5048,"mutability":"mutable","name":"value","nameLocation":"7255:5:14","nodeType":"VariableDeclaration","scope":5073,"src":"7247:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5047,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:14"},"returnParameters":{"id":5052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5073,"src":"7285:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5050,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:14"},"scope":6475,"src":"7228:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5100,"nodeType":"Block","src":"7803:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"7817:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5083,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":5082,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":5086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:14","memberName":"max","nodeType":"MemberAccess","src":"7825:17:14","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5094,"nodeType":"IfStatement","src":"7813:105:14","trueBody":{"id":5093,"nodeType":"Block","src":"7844:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":5089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:14","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":5090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"7901:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5088,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"7865:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5092,"nodeType":"RevertStatement","src":"7858:49:14"}]}},{"expression":{"arguments":[{"id":5097,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"7942:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5095,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:14","typeDescriptions":{}}},"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":5080,"id":5099,"nodeType":"Return","src":"7927:21:14"}]},"documentation":{"id":5074,"nodeType":"StructuredDocumentation","src":"7452:280:14","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":5101,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:14","nodeType":"FunctionDefinition","parameters":{"id":5077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5076,"mutability":"mutable","name":"value","nameLocation":"7764:5:14","nodeType":"VariableDeclaration","scope":5101,"src":"7756:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5075,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:14"},"returnParameters":{"id":5080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5101,"src":"7794:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":5078,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:14","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:14"},"scope":6475,"src":"7737:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5128,"nodeType":"Block","src":"8312:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5109,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5104,"src":"8326:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5111,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":5110,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":5114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:14","memberName":"max","nodeType":"MemberAccess","src":"8334:17:14","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5122,"nodeType":"IfStatement","src":"8322:105:14","trueBody":{"id":5121,"nodeType":"Block","src":"8353:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":5117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:14","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":5118,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5104,"src":"8410:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5116,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"8374:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5120,"nodeType":"RevertStatement","src":"8367:49:14"}]}},{"expression":{"arguments":[{"id":5125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5104,"src":"8451:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5123,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:14","typeDescriptions":{}}},"id":5126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":5108,"id":5127,"nodeType":"Return","src":"8436:21:14"}]},"documentation":{"id":5102,"nodeType":"StructuredDocumentation","src":"7961:280:14","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":5129,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:14","nodeType":"FunctionDefinition","parameters":{"id":5105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5104,"mutability":"mutable","name":"value","nameLocation":"8273:5:14","nodeType":"VariableDeclaration","scope":5129,"src":"8265:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5103,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:14"},"returnParameters":{"id":5108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5129,"src":"8303:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":5106,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:14","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:14"},"scope":6475,"src":"8246:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5156,"nodeType":"Block","src":"8821:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5132,"src":"8835:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5139,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":5138,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":5142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:14","memberName":"max","nodeType":"MemberAccess","src":"8843:17:14","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5150,"nodeType":"IfStatement","src":"8831:105:14","trueBody":{"id":5149,"nodeType":"Block","src":"8862:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":5145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:14","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":5146,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5132,"src":"8919:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5144,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"8883:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5148,"nodeType":"RevertStatement","src":"8876:49:14"}]}},{"expression":{"arguments":[{"id":5153,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5132,"src":"8960:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5151,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:14","typeDescriptions":{}}},"id":5154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":5136,"id":5155,"nodeType":"Return","src":"8945:21:14"}]},"documentation":{"id":5130,"nodeType":"StructuredDocumentation","src":"8470:280:14","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":5157,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:14","nodeType":"FunctionDefinition","parameters":{"id":5133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5132,"mutability":"mutable","name":"value","nameLocation":"8782:5:14","nodeType":"VariableDeclaration","scope":5157,"src":"8774:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5131,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:14"},"returnParameters":{"id":5136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5135,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5157,"src":"8812:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":5134,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:14","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:14"},"scope":6475,"src":"8755:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5184,"nodeType":"Block","src":"9330:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"9344:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5167,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":5166,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":5170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:14","memberName":"max","nodeType":"MemberAccess","src":"9352:17:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5178,"nodeType":"IfStatement","src":"9340:105:14","trueBody":{"id":5177,"nodeType":"Block","src":"9371:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":5173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:14","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":5174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"9428:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5172,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"9392:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5176,"nodeType":"RevertStatement","src":"9385:49:14"}]}},{"expression":{"arguments":[{"id":5181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"9469:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5179,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:14","typeDescriptions":{}}},"id":5182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":5164,"id":5183,"nodeType":"Return","src":"9454:21:14"}]},"documentation":{"id":5158,"nodeType":"StructuredDocumentation","src":"8979:280:14","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":5185,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:14","nodeType":"FunctionDefinition","parameters":{"id":5161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5160,"mutability":"mutable","name":"value","nameLocation":"9291:5:14","nodeType":"VariableDeclaration","scope":5185,"src":"9283:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5159,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:14"},"returnParameters":{"id":5164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5185,"src":"9321:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5162,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:14"},"scope":6475,"src":"9264:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5212,"nodeType":"Block","src":"9839:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5193,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5188,"src":"9853:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5195,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":5194,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":5198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:14","memberName":"max","nodeType":"MemberAccess","src":"9861:17:14","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5206,"nodeType":"IfStatement","src":"9849:105:14","trueBody":{"id":5205,"nodeType":"Block","src":"9880:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":5201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:14","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":5202,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5188,"src":"9937:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5200,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"9901:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5204,"nodeType":"RevertStatement","src":"9894:49:14"}]}},{"expression":{"arguments":[{"id":5209,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5188,"src":"9978:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5207,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:14","typeDescriptions":{}}},"id":5210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":5192,"id":5211,"nodeType":"Return","src":"9963:21:14"}]},"documentation":{"id":5186,"nodeType":"StructuredDocumentation","src":"9488:280:14","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":5213,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:14","nodeType":"FunctionDefinition","parameters":{"id":5189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5188,"mutability":"mutable","name":"value","nameLocation":"9800:5:14","nodeType":"VariableDeclaration","scope":5213,"src":"9792:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5187,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:14"},"returnParameters":{"id":5192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5213,"src":"9830:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":5190,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:14","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:14"},"scope":6475,"src":"9773:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5240,"nodeType":"Block","src":"10348:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"10362:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5223,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":5222,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":5226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:14","memberName":"max","nodeType":"MemberAccess","src":"10370:17:14","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5234,"nodeType":"IfStatement","src":"10358:105:14","trueBody":{"id":5233,"nodeType":"Block","src":"10389:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":5229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:14","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":5230,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"10446:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5228,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"10410:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5232,"nodeType":"RevertStatement","src":"10403:49:14"}]}},{"expression":{"arguments":[{"id":5237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"10487:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5235,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:14","typeDescriptions":{}}},"id":5238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":5220,"id":5239,"nodeType":"Return","src":"10472:21:14"}]},"documentation":{"id":5214,"nodeType":"StructuredDocumentation","src":"9997:280:14","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":5241,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:14","nodeType":"FunctionDefinition","parameters":{"id":5217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5216,"mutability":"mutable","name":"value","nameLocation":"10309:5:14","nodeType":"VariableDeclaration","scope":5241,"src":"10301:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5215,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:14"},"returnParameters":{"id":5220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5219,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5241,"src":"10339:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":5218,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:14","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:14"},"scope":6475,"src":"10282:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5268,"nodeType":"Block","src":"10857:152:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"10871:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5251,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":5250,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":5254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:14","memberName":"max","nodeType":"MemberAccess","src":"10879:17:14","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5262,"nodeType":"IfStatement","src":"10867:105:14","trueBody":{"id":5261,"nodeType":"Block","src":"10898:74:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":5257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:14","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":5258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"10955:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5256,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"10919:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5260,"nodeType":"RevertStatement","src":"10912:49:14"}]}},{"expression":{"arguments":[{"id":5265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5244,"src":"10996:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5263,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:14","typeDescriptions":{}}},"id":5266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":5248,"id":5267,"nodeType":"Return","src":"10981:21:14"}]},"documentation":{"id":5242,"nodeType":"StructuredDocumentation","src":"10506:280:14","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":5269,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:14","nodeType":"FunctionDefinition","parameters":{"id":5245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5244,"mutability":"mutable","name":"value","nameLocation":"10818:5:14","nodeType":"VariableDeclaration","scope":5269,"src":"10810:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5243,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:14"},"returnParameters":{"id":5248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5269,"src":"10848:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5246,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:14","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:14"},"scope":6475,"src":"10791:218:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5296,"nodeType":"Block","src":"11360:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5277,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5272,"src":"11374:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5279,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":5278,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":5282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:14","memberName":"max","nodeType":"MemberAccess","src":"11382:16:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5290,"nodeType":"IfStatement","src":"11370:103:14","trueBody":{"id":5289,"nodeType":"Block","src":"11400:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":5285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:14","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":5286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5272,"src":"11456:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5284,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"11421:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5288,"nodeType":"RevertStatement","src":"11414:48:14"}]}},{"expression":{"arguments":[{"id":5293,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5272,"src":"11496:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5291,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:14","typeDescriptions":{}}},"id":5294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":5276,"id":5295,"nodeType":"Return","src":"11482:20:14"}]},"documentation":{"id":5270,"nodeType":"StructuredDocumentation","src":"11015:276:14","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":5297,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:14","nodeType":"FunctionDefinition","parameters":{"id":5273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5272,"mutability":"mutable","name":"value","nameLocation":"11322:5:14","nodeType":"VariableDeclaration","scope":5297,"src":"11314:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5271,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:14"},"returnParameters":{"id":5276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5297,"src":"11352:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5274,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:14"},"scope":6475,"src":"11296:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5324,"nodeType":"Block","src":"11860:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5305,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"11874:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5307,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":5306,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":5310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:14","memberName":"max","nodeType":"MemberAccess","src":"11882:16:14","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5318,"nodeType":"IfStatement","src":"11870:103:14","trueBody":{"id":5317,"nodeType":"Block","src":"11900:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":5313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:14","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":5314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"11956:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5312,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"11921:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5316,"nodeType":"RevertStatement","src":"11914:48:14"}]}},{"expression":{"arguments":[{"id":5321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"11996:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5319,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:14","typeDescriptions":{}}},"id":5322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":5304,"id":5323,"nodeType":"Return","src":"11982:20:14"}]},"documentation":{"id":5298,"nodeType":"StructuredDocumentation","src":"11515:276:14","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":5325,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:14","nodeType":"FunctionDefinition","parameters":{"id":5301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5300,"mutability":"mutable","name":"value","nameLocation":"11822:5:14","nodeType":"VariableDeclaration","scope":5325,"src":"11814:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5299,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:14"},"returnParameters":{"id":5304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5325,"src":"11852:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":5302,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:14","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:14"},"scope":6475,"src":"11796:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5352,"nodeType":"Block","src":"12360:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5328,"src":"12374:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5335,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":5334,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":5338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:14","memberName":"max","nodeType":"MemberAccess","src":"12382:16:14","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5346,"nodeType":"IfStatement","src":"12370:103:14","trueBody":{"id":5345,"nodeType":"Block","src":"12400:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":5341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:14","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":5342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5328,"src":"12456:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5340,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"12421:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5344,"nodeType":"RevertStatement","src":"12414:48:14"}]}},{"expression":{"arguments":[{"id":5349,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5328,"src":"12496:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5347,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:14","typeDescriptions":{}}},"id":5350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":5332,"id":5351,"nodeType":"Return","src":"12482:20:14"}]},"documentation":{"id":5326,"nodeType":"StructuredDocumentation","src":"12015:276:14","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":5353,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:14","nodeType":"FunctionDefinition","parameters":{"id":5329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5328,"mutability":"mutable","name":"value","nameLocation":"12322:5:14","nodeType":"VariableDeclaration","scope":5353,"src":"12314:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5327,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:14"},"returnParameters":{"id":5332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5331,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5353,"src":"12352:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":5330,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:14","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:14"},"scope":6475,"src":"12296:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5380,"nodeType":"Block","src":"12860:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5361,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5356,"src":"12874:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5363,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":5362,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":5366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:14","memberName":"max","nodeType":"MemberAccess","src":"12882:16:14","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5374,"nodeType":"IfStatement","src":"12870:103:14","trueBody":{"id":5373,"nodeType":"Block","src":"12900:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":5369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:14","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":5370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5356,"src":"12956:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5368,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"12921:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5372,"nodeType":"RevertStatement","src":"12914:48:14"}]}},{"expression":{"arguments":[{"id":5377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5356,"src":"12996:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5375,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:14","typeDescriptions":{}}},"id":5378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":5360,"id":5379,"nodeType":"Return","src":"12982:20:14"}]},"documentation":{"id":5354,"nodeType":"StructuredDocumentation","src":"12515:276:14","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":5381,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:14","nodeType":"FunctionDefinition","parameters":{"id":5357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5356,"mutability":"mutable","name":"value","nameLocation":"12822:5:14","nodeType":"VariableDeclaration","scope":5381,"src":"12814:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5355,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:14"},"returnParameters":{"id":5360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5381,"src":"12852:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":5358,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:14","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:14"},"scope":6475,"src":"12796:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5408,"nodeType":"Block","src":"13360:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"13374:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5391,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":5390,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":5394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:14","memberName":"max","nodeType":"MemberAccess","src":"13382:16:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5402,"nodeType":"IfStatement","src":"13370:103:14","trueBody":{"id":5401,"nodeType":"Block","src":"13400:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":5397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:14","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":5398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"13456:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5396,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"13421:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5400,"nodeType":"RevertStatement","src":"13414:48:14"}]}},{"expression":{"arguments":[{"id":5405,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"13496:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5403,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:14","typeDescriptions":{}}},"id":5406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5388,"id":5407,"nodeType":"Return","src":"13482:20:14"}]},"documentation":{"id":5382,"nodeType":"StructuredDocumentation","src":"13015:276:14","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":5409,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:14","nodeType":"FunctionDefinition","parameters":{"id":5385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5384,"mutability":"mutable","name":"value","nameLocation":"13322:5:14","nodeType":"VariableDeclaration","scope":5409,"src":"13314:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5383,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:14"},"returnParameters":{"id":5388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5387,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5409,"src":"13352:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5386,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:14"},"scope":6475,"src":"13296:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5436,"nodeType":"Block","src":"13860:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"13874:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5419,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":5418,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":5422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:14","memberName":"max","nodeType":"MemberAccess","src":"13882:16:14","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5430,"nodeType":"IfStatement","src":"13870:103:14","trueBody":{"id":5429,"nodeType":"Block","src":"13900:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":5425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:14","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":5426,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"13956:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5424,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"13921:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5428,"nodeType":"RevertStatement","src":"13914:48:14"}]}},{"expression":{"arguments":[{"id":5433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"13996:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5431,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:14","typeDescriptions":{}}},"id":5434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":5416,"id":5435,"nodeType":"Return","src":"13982:20:14"}]},"documentation":{"id":5410,"nodeType":"StructuredDocumentation","src":"13515:276:14","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":5437,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:14","nodeType":"FunctionDefinition","parameters":{"id":5413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5412,"mutability":"mutable","name":"value","nameLocation":"13822:5:14","nodeType":"VariableDeclaration","scope":5437,"src":"13814:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5411,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:14"},"returnParameters":{"id":5416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5437,"src":"13852:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":5414,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:14","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:14"},"scope":6475,"src":"13796:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5464,"nodeType":"Block","src":"14360:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5440,"src":"14374:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5447,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":5446,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":5450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:14","memberName":"max","nodeType":"MemberAccess","src":"14382:16:14","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5458,"nodeType":"IfStatement","src":"14370:103:14","trueBody":{"id":5457,"nodeType":"Block","src":"14400:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":5453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:14","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":5454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5440,"src":"14456:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5452,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"14421:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5456,"nodeType":"RevertStatement","src":"14414:48:14"}]}},{"expression":{"arguments":[{"id":5461,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5440,"src":"14496:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5459,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:14","typeDescriptions":{}}},"id":5462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":5444,"id":5463,"nodeType":"Return","src":"14482:20:14"}]},"documentation":{"id":5438,"nodeType":"StructuredDocumentation","src":"14015:276:14","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":5465,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:14","nodeType":"FunctionDefinition","parameters":{"id":5441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5440,"mutability":"mutable","name":"value","nameLocation":"14322:5:14","nodeType":"VariableDeclaration","scope":5465,"src":"14314:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5439,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:14"},"returnParameters":{"id":5444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5443,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5465,"src":"14352:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5442,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:14","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:14"},"scope":6475,"src":"14296:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5492,"nodeType":"Block","src":"14860:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5468,"src":"14874:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5475,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":5474,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":5478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:14","memberName":"max","nodeType":"MemberAccess","src":"14882:16:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5486,"nodeType":"IfStatement","src":"14870:103:14","trueBody":{"id":5485,"nodeType":"Block","src":"14900:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":5481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:14","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":5482,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5468,"src":"14956:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5480,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"14921:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5484,"nodeType":"RevertStatement","src":"14914:48:14"}]}},{"expression":{"arguments":[{"id":5489,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5468,"src":"14996:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5487,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:14","typeDescriptions":{}}},"id":5490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":5472,"id":5491,"nodeType":"Return","src":"14982:20:14"}]},"documentation":{"id":5466,"nodeType":"StructuredDocumentation","src":"14515:276:14","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":5493,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:14","nodeType":"FunctionDefinition","parameters":{"id":5469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5468,"mutability":"mutable","name":"value","nameLocation":"14822:5:14","nodeType":"VariableDeclaration","scope":5493,"src":"14814:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5467,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:14"},"returnParameters":{"id":5472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5493,"src":"14852:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":5470,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:14"},"scope":6475,"src":"14796:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5520,"nodeType":"Block","src":"15360:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5501,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5496,"src":"15374:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5503,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":5502,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":5506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:14","memberName":"max","nodeType":"MemberAccess","src":"15382:16:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5514,"nodeType":"IfStatement","src":"15370:103:14","trueBody":{"id":5513,"nodeType":"Block","src":"15400:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":5509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:14","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":5510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5496,"src":"15456:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5508,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"15421:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5512,"nodeType":"RevertStatement","src":"15414:48:14"}]}},{"expression":{"arguments":[{"id":5517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5496,"src":"15496:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5515,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:14","typeDescriptions":{}}},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5500,"id":5519,"nodeType":"Return","src":"15482:20:14"}]},"documentation":{"id":5494,"nodeType":"StructuredDocumentation","src":"15015:276:14","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":5521,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:14","nodeType":"FunctionDefinition","parameters":{"id":5497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5496,"mutability":"mutable","name":"value","nameLocation":"15322:5:14","nodeType":"VariableDeclaration","scope":5521,"src":"15314:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5495,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:14"},"returnParameters":{"id":5500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5521,"src":"15352:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5498,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:14"},"scope":6475,"src":"15296:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5548,"nodeType":"Block","src":"15860:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"15874:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5531,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":5530,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":5534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:14","memberName":"max","nodeType":"MemberAccess","src":"15882:16:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5542,"nodeType":"IfStatement","src":"15870:103:14","trueBody":{"id":5541,"nodeType":"Block","src":"15900:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":5537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:14","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":5538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"15956:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5536,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"15921:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5540,"nodeType":"RevertStatement","src":"15914:48:14"}]}},{"expression":{"arguments":[{"id":5545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"15996:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5543,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:14","typeDescriptions":{}}},"id":5546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":5528,"id":5547,"nodeType":"Return","src":"15982:20:14"}]},"documentation":{"id":5522,"nodeType":"StructuredDocumentation","src":"15515:276:14","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":5549,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:14","nodeType":"FunctionDefinition","parameters":{"id":5525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5524,"mutability":"mutable","name":"value","nameLocation":"15822:5:14","nodeType":"VariableDeclaration","scope":5549,"src":"15814:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5523,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:14"},"returnParameters":{"id":5528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5527,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5549,"src":"15852:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5526,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:14"},"scope":6475,"src":"15796:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5576,"nodeType":"Block","src":"16360:149:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5557,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"16374:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5559,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":5558,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":5562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:14","memberName":"max","nodeType":"MemberAccess","src":"16382:16:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5570,"nodeType":"IfStatement","src":"16370:103:14","trueBody":{"id":5569,"nodeType":"Block","src":"16400:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":5565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:14","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":5566,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"16456:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5564,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"16421:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5568,"nodeType":"RevertStatement","src":"16414:48:14"}]}},{"expression":{"arguments":[{"id":5573,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"16496:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5571,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:14","typeDescriptions":{}}},"id":5574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":5556,"id":5575,"nodeType":"Return","src":"16482:20:14"}]},"documentation":{"id":5550,"nodeType":"StructuredDocumentation","src":"16015:276:14","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":5577,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:14","nodeType":"FunctionDefinition","parameters":{"id":5553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5552,"mutability":"mutable","name":"value","nameLocation":"16322:5:14","nodeType":"VariableDeclaration","scope":5577,"src":"16314:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5551,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:14"},"returnParameters":{"id":5556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5555,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5577,"src":"16352:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5554,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:14"},"scope":6475,"src":"16296:213:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5604,"nodeType":"Block","src":"16854:146:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5580,"src":"16868:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5587,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":5586,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":5590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:14","memberName":"max","nodeType":"MemberAccess","src":"16876:15:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5598,"nodeType":"IfStatement","src":"16864:101:14","trueBody":{"id":5597,"nodeType":"Block","src":"16893:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":5593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:14","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":5594,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5580,"src":"16948:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5592,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"16914:30:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":5595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5596,"nodeType":"RevertStatement","src":"16907:47:14"}]}},{"expression":{"arguments":[{"id":5601,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5580,"src":"16987:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5599,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:14","typeDescriptions":{}}},"id":5602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5584,"id":5603,"nodeType":"Return","src":"16974:19:14"}]},"documentation":{"id":5578,"nodeType":"StructuredDocumentation","src":"16515:272:14","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":5605,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:14","nodeType":"FunctionDefinition","parameters":{"id":5581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5580,"mutability":"mutable","name":"value","nameLocation":"16817:5:14","nodeType":"VariableDeclaration","scope":5605,"src":"16809:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5579,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:14"},"returnParameters":{"id":5584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5605,"src":"16847:5:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5582,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:14"},"scope":6475,"src":"16792:208:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5627,"nodeType":"Block","src":"17236:128:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5613,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"17250:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5621,"nodeType":"IfStatement","src":"17246:81:14","trueBody":{"id":5620,"nodeType":"Block","src":"17261:66:14","statements":[{"errorCall":{"arguments":[{"id":5617,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"17310:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5616,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"17282:27:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":5618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5619,"nodeType":"RevertStatement","src":"17275:41:14"}]}},{"expression":{"arguments":[{"id":5624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"17351:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5622,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:14","typeDescriptions":{}}},"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5612,"id":5626,"nodeType":"Return","src":"17336:21:14"}]},"documentation":{"id":5606,"nodeType":"StructuredDocumentation","src":"17006:160:14","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":5628,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:14","nodeType":"FunctionDefinition","parameters":{"id":5609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5608,"mutability":"mutable","name":"value","nameLocation":"17197:5:14","nodeType":"VariableDeclaration","scope":5628,"src":"17190:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5607,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:14"},"returnParameters":{"id":5612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5628,"src":"17227:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5610,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:14"},"scope":6475,"src":"17171:193:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5653,"nodeType":"Block","src":"17761:150:14","statements":[{"expression":{"id":5641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5636,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"17771:10:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5631,"src":"17791:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":5637,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:14","typeDescriptions":{}}},"id":5640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":5642,"nodeType":"ExpressionStatement","src":"17771:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5643,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"17811:10:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5631,"src":"17825:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5652,"nodeType":"IfStatement","src":"17807:98:14","trueBody":{"id":5651,"nodeType":"Block","src":"17832:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":5647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:14","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":5648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5631,"src":"17888:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5646,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"17853:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5650,"nodeType":"RevertStatement","src":"17846:48:14"}]}}]},"documentation":{"id":5629,"nodeType":"StructuredDocumentation","src":"17370:312:14","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":5654,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:14","nodeType":"FunctionDefinition","parameters":{"id":5632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5631,"mutability":"mutable","name":"value","nameLocation":"17712:5:14","nodeType":"VariableDeclaration","scope":5654,"src":"17705:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5630,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:14"},"returnParameters":{"id":5635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5634,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:14","nodeType":"VariableDeclaration","scope":5654,"src":"17742:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":5633,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:14"},"scope":6475,"src":"17687:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5679,"nodeType":"Block","src":"18308:150:14","statements":[{"expression":{"id":5667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5662,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"18318:10:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5665,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"18338:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":5663,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:14","typeDescriptions":{}}},"id":5666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":5668,"nodeType":"ExpressionStatement","src":"18318:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5669,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5660,"src":"18358:10:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"18372:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5678,"nodeType":"IfStatement","src":"18354:98:14","trueBody":{"id":5677,"nodeType":"Block","src":"18379:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":5673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:14","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":5674,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"18435:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5672,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"18400:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5676,"nodeType":"RevertStatement","src":"18393:48:14"}]}}]},"documentation":{"id":5655,"nodeType":"StructuredDocumentation","src":"17917:312:14","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":5680,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:14","nodeType":"FunctionDefinition","parameters":{"id":5658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5657,"mutability":"mutable","name":"value","nameLocation":"18259:5:14","nodeType":"VariableDeclaration","scope":5680,"src":"18252:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5656,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:14"},"returnParameters":{"id":5661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5660,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:14","nodeType":"VariableDeclaration","scope":5680,"src":"18289:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":5659,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:14"},"scope":6475,"src":"18234:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5705,"nodeType":"Block","src":"18855:150:14","statements":[{"expression":{"id":5693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5688,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5686,"src":"18865:10:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5691,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"18885:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":5689,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:14","typeDescriptions":{}}},"id":5692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":5694,"nodeType":"ExpressionStatement","src":"18865:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5695,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5686,"src":"18905:10:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5696,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"18919:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5704,"nodeType":"IfStatement","src":"18901:98:14","trueBody":{"id":5703,"nodeType":"Block","src":"18926:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":5699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:14","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":5700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"18982:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5698,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"18947:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5702,"nodeType":"RevertStatement","src":"18940:48:14"}]}}]},"documentation":{"id":5681,"nodeType":"StructuredDocumentation","src":"18464:312:14","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":5706,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:14","nodeType":"FunctionDefinition","parameters":{"id":5684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5683,"mutability":"mutable","name":"value","nameLocation":"18806:5:14","nodeType":"VariableDeclaration","scope":5706,"src":"18799:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5682,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:14"},"returnParameters":{"id":5687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5686,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:14","nodeType":"VariableDeclaration","scope":5706,"src":"18836:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":5685,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:14"},"scope":6475,"src":"18781:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5731,"nodeType":"Block","src":"19402:150:14","statements":[{"expression":{"id":5719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5714,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5712,"src":"19412:10:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"19432:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":5715,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:14","typeDescriptions":{}}},"id":5718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":5720,"nodeType":"ExpressionStatement","src":"19412:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5721,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5712,"src":"19452:10:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5722,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"19466:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5730,"nodeType":"IfStatement","src":"19448:98:14","trueBody":{"id":5729,"nodeType":"Block","src":"19473:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":5725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:14","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":5726,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"19529:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5724,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"19494:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5728,"nodeType":"RevertStatement","src":"19487:48:14"}]}}]},"documentation":{"id":5707,"nodeType":"StructuredDocumentation","src":"19011:312:14","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":5732,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:14","nodeType":"FunctionDefinition","parameters":{"id":5710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5709,"mutability":"mutable","name":"value","nameLocation":"19353:5:14","nodeType":"VariableDeclaration","scope":5732,"src":"19346:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5708,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:14"},"returnParameters":{"id":5713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5712,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:14","nodeType":"VariableDeclaration","scope":5732,"src":"19383:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":5711,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:14"},"scope":6475,"src":"19328:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5757,"nodeType":"Block","src":"19949:150:14","statements":[{"expression":{"id":5745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5740,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"19959:10:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5743,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5735,"src":"19979:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":5741,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:14","typeDescriptions":{}}},"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":5746,"nodeType":"ExpressionStatement","src":"19959:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5747,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"19999:10:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5748,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5735,"src":"20013:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5756,"nodeType":"IfStatement","src":"19995:98:14","trueBody":{"id":5755,"nodeType":"Block","src":"20020:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":5751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:14","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":5752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5735,"src":"20076:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5750,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"20041:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5754,"nodeType":"RevertStatement","src":"20034:48:14"}]}}]},"documentation":{"id":5733,"nodeType":"StructuredDocumentation","src":"19558:312:14","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":5758,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:14","nodeType":"FunctionDefinition","parameters":{"id":5736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5735,"mutability":"mutable","name":"value","nameLocation":"19900:5:14","nodeType":"VariableDeclaration","scope":5758,"src":"19893:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5734,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:14"},"returnParameters":{"id":5739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5738,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:14","nodeType":"VariableDeclaration","scope":5758,"src":"19930:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":5737,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:14"},"scope":6475,"src":"19875:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5783,"nodeType":"Block","src":"20496:150:14","statements":[{"expression":{"id":5771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5766,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"20506:10:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"20526:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":5767,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:14","typeDescriptions":{}}},"id":5770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":5772,"nodeType":"ExpressionStatement","src":"20506:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5773,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"20546:10:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5774,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"20560:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5782,"nodeType":"IfStatement","src":"20542:98:14","trueBody":{"id":5781,"nodeType":"Block","src":"20567:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":5777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:14","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":5778,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"20623:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5776,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"20588:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5780,"nodeType":"RevertStatement","src":"20581:48:14"}]}}]},"documentation":{"id":5759,"nodeType":"StructuredDocumentation","src":"20105:312:14","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":5784,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:14","nodeType":"FunctionDefinition","parameters":{"id":5762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5761,"mutability":"mutable","name":"value","nameLocation":"20447:5:14","nodeType":"VariableDeclaration","scope":5784,"src":"20440:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5760,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:14"},"returnParameters":{"id":5765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5764,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:14","nodeType":"VariableDeclaration","scope":5784,"src":"20477:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":5763,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:14"},"scope":6475,"src":"20422:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5809,"nodeType":"Block","src":"21043:150:14","statements":[{"expression":{"id":5797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5792,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"21053:10:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5795,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"21073:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":5793,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:14","typeDescriptions":{}}},"id":5796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":5798,"nodeType":"ExpressionStatement","src":"21053:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5799,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"21093:10:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5800,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"21107:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5808,"nodeType":"IfStatement","src":"21089:98:14","trueBody":{"id":5807,"nodeType":"Block","src":"21114:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":5803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:14","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":5804,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"21170:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5802,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"21135:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5806,"nodeType":"RevertStatement","src":"21128:48:14"}]}}]},"documentation":{"id":5785,"nodeType":"StructuredDocumentation","src":"20652:312:14","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":5810,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:14","nodeType":"FunctionDefinition","parameters":{"id":5788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5787,"mutability":"mutable","name":"value","nameLocation":"20994:5:14","nodeType":"VariableDeclaration","scope":5810,"src":"20987:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5786,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:14"},"returnParameters":{"id":5791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5790,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:14","nodeType":"VariableDeclaration","scope":5810,"src":"21024:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":5789,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:14"},"scope":6475,"src":"20969:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5835,"nodeType":"Block","src":"21590:150:14","statements":[{"expression":{"id":5823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5818,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5816,"src":"21600:10:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5821,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"21620:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":5819,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:14","typeDescriptions":{}}},"id":5822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":5824,"nodeType":"ExpressionStatement","src":"21600:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5825,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5816,"src":"21640:10:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"21654:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5834,"nodeType":"IfStatement","src":"21636:98:14","trueBody":{"id":5833,"nodeType":"Block","src":"21661:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":5829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:14","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":5830,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"21717:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5828,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"21682:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5832,"nodeType":"RevertStatement","src":"21675:48:14"}]}}]},"documentation":{"id":5811,"nodeType":"StructuredDocumentation","src":"21199:312:14","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":5836,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:14","nodeType":"FunctionDefinition","parameters":{"id":5814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5813,"mutability":"mutable","name":"value","nameLocation":"21541:5:14","nodeType":"VariableDeclaration","scope":5836,"src":"21534:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5812,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:14"},"returnParameters":{"id":5817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5816,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:14","nodeType":"VariableDeclaration","scope":5836,"src":"21571:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":5815,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:14"},"scope":6475,"src":"21516:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5861,"nodeType":"Block","src":"22137:150:14","statements":[{"expression":{"id":5849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5844,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"22147:10:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5847,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"22167:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5846,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":5845,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:14","typeDescriptions":{}}},"id":5848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":5850,"nodeType":"ExpressionStatement","src":"22147:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5851,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"22187:10:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5852,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"22201:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5860,"nodeType":"IfStatement","src":"22183:98:14","trueBody":{"id":5859,"nodeType":"Block","src":"22208:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":5855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:14","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":5856,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"22264:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5854,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"22229:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5858,"nodeType":"RevertStatement","src":"22222:48:14"}]}}]},"documentation":{"id":5837,"nodeType":"StructuredDocumentation","src":"21746:312:14","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":5862,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:14","nodeType":"FunctionDefinition","parameters":{"id":5840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5839,"mutability":"mutable","name":"value","nameLocation":"22088:5:14","nodeType":"VariableDeclaration","scope":5862,"src":"22081:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5838,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:14"},"returnParameters":{"id":5843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5842,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:14","nodeType":"VariableDeclaration","scope":5862,"src":"22118:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":5841,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:14"},"scope":6475,"src":"22063:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5887,"nodeType":"Block","src":"22684:150:14","statements":[{"expression":{"id":5875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5870,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5868,"src":"22694:10:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"22714:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":5871,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:14","typeDescriptions":{}}},"id":5874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":5876,"nodeType":"ExpressionStatement","src":"22694:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5877,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5868,"src":"22734:10:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5878,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"22748:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5886,"nodeType":"IfStatement","src":"22730:98:14","trueBody":{"id":5885,"nodeType":"Block","src":"22755:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":5881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:14","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":5882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"22811:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5880,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"22776:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5884,"nodeType":"RevertStatement","src":"22769:48:14"}]}}]},"documentation":{"id":5863,"nodeType":"StructuredDocumentation","src":"22293:312:14","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":5888,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:14","nodeType":"FunctionDefinition","parameters":{"id":5866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5865,"mutability":"mutable","name":"value","nameLocation":"22635:5:14","nodeType":"VariableDeclaration","scope":5888,"src":"22628:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5864,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:14"},"returnParameters":{"id":5869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5868,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:14","nodeType":"VariableDeclaration","scope":5888,"src":"22665:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":5867,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:14"},"scope":6475,"src":"22610:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5913,"nodeType":"Block","src":"23231:150:14","statements":[{"expression":{"id":5901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5896,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5894,"src":"23241:10:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5899,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5891,"src":"23261:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":5897,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:14","typeDescriptions":{}}},"id":5900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":5902,"nodeType":"ExpressionStatement","src":"23241:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5903,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5894,"src":"23281:10:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5891,"src":"23295:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5912,"nodeType":"IfStatement","src":"23277:98:14","trueBody":{"id":5911,"nodeType":"Block","src":"23302:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":5907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:14","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":5908,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5891,"src":"23358:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5906,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"23323:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5910,"nodeType":"RevertStatement","src":"23316:48:14"}]}}]},"documentation":{"id":5889,"nodeType":"StructuredDocumentation","src":"22840:312:14","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":5914,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:14","nodeType":"FunctionDefinition","parameters":{"id":5892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5891,"mutability":"mutable","name":"value","nameLocation":"23182:5:14","nodeType":"VariableDeclaration","scope":5914,"src":"23175:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5890,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:14"},"returnParameters":{"id":5895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5894,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:14","nodeType":"VariableDeclaration","scope":5914,"src":"23212:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":5893,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:14"},"scope":6475,"src":"23157:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5939,"nodeType":"Block","src":"23778:150:14","statements":[{"expression":{"id":5927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5922,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"23788:10:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5925,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"23808:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":5923,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:14","typeDescriptions":{}}},"id":5926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":5928,"nodeType":"ExpressionStatement","src":"23788:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5929,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"23828:10:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5930,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"23842:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5938,"nodeType":"IfStatement","src":"23824:98:14","trueBody":{"id":5937,"nodeType":"Block","src":"23849:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":5933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:14","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":5934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"23905:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5932,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"23870:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5936,"nodeType":"RevertStatement","src":"23863:48:14"}]}}]},"documentation":{"id":5915,"nodeType":"StructuredDocumentation","src":"23387:312:14","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":5940,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:14","nodeType":"FunctionDefinition","parameters":{"id":5918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5917,"mutability":"mutable","name":"value","nameLocation":"23729:5:14","nodeType":"VariableDeclaration","scope":5940,"src":"23722:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5916,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:14"},"returnParameters":{"id":5921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5920,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:14","nodeType":"VariableDeclaration","scope":5940,"src":"23759:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":5919,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:14"},"scope":6475,"src":"23704:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5965,"nodeType":"Block","src":"24325:150:14","statements":[{"expression":{"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5948,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5946,"src":"24335:10:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5951,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5943,"src":"24355:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":5949,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:14","typeDescriptions":{}}},"id":5952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":5954,"nodeType":"ExpressionStatement","src":"24335:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5955,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5946,"src":"24375:10:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5956,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5943,"src":"24389:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5964,"nodeType":"IfStatement","src":"24371:98:14","trueBody":{"id":5963,"nodeType":"Block","src":"24396:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":5959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:14","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":5960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5943,"src":"24452:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5958,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"24417:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5962,"nodeType":"RevertStatement","src":"24410:48:14"}]}}]},"documentation":{"id":5941,"nodeType":"StructuredDocumentation","src":"23934:312:14","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":5966,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:14","nodeType":"FunctionDefinition","parameters":{"id":5944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5943,"mutability":"mutable","name":"value","nameLocation":"24276:5:14","nodeType":"VariableDeclaration","scope":5966,"src":"24269:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5942,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:14"},"returnParameters":{"id":5947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5946,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:14","nodeType":"VariableDeclaration","scope":5966,"src":"24306:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":5945,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:14"},"scope":6475,"src":"24251:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5991,"nodeType":"Block","src":"24872:150:14","statements":[{"expression":{"id":5979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5974,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"24882:10:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5977,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"24902:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":5975,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:14","typeDescriptions":{}}},"id":5978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":5980,"nodeType":"ExpressionStatement","src":"24882:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5981,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"24922:10:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5982,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"24936:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5990,"nodeType":"IfStatement","src":"24918:98:14","trueBody":{"id":5989,"nodeType":"Block","src":"24943:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":5985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:14","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":5986,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"24999:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5984,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"24964:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":5987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5988,"nodeType":"RevertStatement","src":"24957:48:14"}]}}]},"documentation":{"id":5967,"nodeType":"StructuredDocumentation","src":"24481:312:14","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":5992,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:14","nodeType":"FunctionDefinition","parameters":{"id":5970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5969,"mutability":"mutable","name":"value","nameLocation":"24823:5:14","nodeType":"VariableDeclaration","scope":5992,"src":"24816:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5968,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:14"},"returnParameters":{"id":5973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5972,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:14","nodeType":"VariableDeclaration","scope":5992,"src":"24853:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":5971,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:14"},"scope":6475,"src":"24798:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6017,"nodeType":"Block","src":"25419:150:14","statements":[{"expression":{"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6000,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5998,"src":"25429:10:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"25449:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":6001,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:14","typeDescriptions":{}}},"id":6004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":6006,"nodeType":"ExpressionStatement","src":"25429:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6007,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5998,"src":"25469:10:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6008,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"25483:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6016,"nodeType":"IfStatement","src":"25465:98:14","trueBody":{"id":6015,"nodeType":"Block","src":"25490:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":6011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:14","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":6012,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"25546:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6010,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"25511:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6014,"nodeType":"RevertStatement","src":"25504:48:14"}]}}]},"documentation":{"id":5993,"nodeType":"StructuredDocumentation","src":"25028:312:14","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":6018,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:14","nodeType":"FunctionDefinition","parameters":{"id":5996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5995,"mutability":"mutable","name":"value","nameLocation":"25370:5:14","nodeType":"VariableDeclaration","scope":6018,"src":"25363:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5994,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:14"},"returnParameters":{"id":5999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5998,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:14","nodeType":"VariableDeclaration","scope":6018,"src":"25400:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":5997,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:14"},"scope":6475,"src":"25345:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6043,"nodeType":"Block","src":"25966:150:14","statements":[{"expression":{"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6026,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"25976:10:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6029,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"25996:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":6027,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:14","typeDescriptions":{}}},"id":6030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6032,"nodeType":"ExpressionStatement","src":"25976:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6033,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"26016:10:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6034,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"26030:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6042,"nodeType":"IfStatement","src":"26012:98:14","trueBody":{"id":6041,"nodeType":"Block","src":"26037:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":6037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:14","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":6038,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"26093:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6036,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"26058:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6040,"nodeType":"RevertStatement","src":"26051:48:14"}]}}]},"documentation":{"id":6019,"nodeType":"StructuredDocumentation","src":"25575:312:14","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":6044,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:14","nodeType":"FunctionDefinition","parameters":{"id":6022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6021,"mutability":"mutable","name":"value","nameLocation":"25917:5:14","nodeType":"VariableDeclaration","scope":6044,"src":"25910:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6020,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:14"},"returnParameters":{"id":6025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6024,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:14","nodeType":"VariableDeclaration","scope":6044,"src":"25947:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6023,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:14"},"scope":6475,"src":"25892:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6069,"nodeType":"Block","src":"26513:150:14","statements":[{"expression":{"id":6057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6052,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"26523:10:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6055,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"26543:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":6053,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:14","typeDescriptions":{}}},"id":6056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":6058,"nodeType":"ExpressionStatement","src":"26523:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6059,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"26563:10:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"26577:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6068,"nodeType":"IfStatement","src":"26559:98:14","trueBody":{"id":6067,"nodeType":"Block","src":"26584:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":6063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:14","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":6064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"26640:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6062,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"26605:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6066,"nodeType":"RevertStatement","src":"26598:48:14"}]}}]},"documentation":{"id":6045,"nodeType":"StructuredDocumentation","src":"26122:312:14","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":6070,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:14","nodeType":"FunctionDefinition","parameters":{"id":6048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6047,"mutability":"mutable","name":"value","nameLocation":"26464:5:14","nodeType":"VariableDeclaration","scope":6070,"src":"26457:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6046,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:14"},"returnParameters":{"id":6051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6050,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:14","nodeType":"VariableDeclaration","scope":6070,"src":"26494:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":6049,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:14"},"scope":6475,"src":"26439:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6095,"nodeType":"Block","src":"27060:150:14","statements":[{"expression":{"id":6083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6078,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"27070:10:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"27090:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":6079,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:14","typeDescriptions":{}}},"id":6082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":6084,"nodeType":"ExpressionStatement","src":"27070:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6085,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6076,"src":"27110:10:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"27124:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6094,"nodeType":"IfStatement","src":"27106:98:14","trueBody":{"id":6093,"nodeType":"Block","src":"27131:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":6089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:14","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":6090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"27187:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6088,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"27152:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6092,"nodeType":"RevertStatement","src":"27145:48:14"}]}}]},"documentation":{"id":6071,"nodeType":"StructuredDocumentation","src":"26669:312:14","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":6096,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:14","nodeType":"FunctionDefinition","parameters":{"id":6074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6073,"mutability":"mutable","name":"value","nameLocation":"27011:5:14","nodeType":"VariableDeclaration","scope":6096,"src":"27004:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6072,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:14"},"returnParameters":{"id":6077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6076,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:14","nodeType":"VariableDeclaration","scope":6096,"src":"27041:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":6075,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:14"},"scope":6475,"src":"26986:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6121,"nodeType":"Block","src":"27607:150:14","statements":[{"expression":{"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6104,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6102,"src":"27617:10:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6107,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6099,"src":"27637:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":6105,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:14","typeDescriptions":{}}},"id":6108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":6110,"nodeType":"ExpressionStatement","src":"27617:26:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6111,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6102,"src":"27657:10:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6112,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6099,"src":"27671:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6120,"nodeType":"IfStatement","src":"27653:98:14","trueBody":{"id":6119,"nodeType":"Block","src":"27678:73:14","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":6115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:14","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":6116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6099,"src":"27734:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6114,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"27699:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6118,"nodeType":"RevertStatement","src":"27692:48:14"}]}}]},"documentation":{"id":6097,"nodeType":"StructuredDocumentation","src":"27216:312:14","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":6122,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:14","nodeType":"FunctionDefinition","parameters":{"id":6100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6099,"mutability":"mutable","name":"value","nameLocation":"27558:5:14","nodeType":"VariableDeclaration","scope":6122,"src":"27551:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6098,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:14"},"returnParameters":{"id":6103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6102,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:14","nodeType":"VariableDeclaration","scope":6122,"src":"27588:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":6101,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:14"},"scope":6475,"src":"27533:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6147,"nodeType":"Block","src":"28147:148:14","statements":[{"expression":{"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6130,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"28157:10:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6133,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"28176:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":6131,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:14","typeDescriptions":{}}},"id":6134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":6136,"nodeType":"ExpressionStatement","src":"28157:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6137,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"28196:10:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6138,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"28210:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6146,"nodeType":"IfStatement","src":"28192:97:14","trueBody":{"id":6145,"nodeType":"Block","src":"28217:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":6141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:14","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":6142,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"28272:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6140,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"28238:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6144,"nodeType":"RevertStatement","src":"28231:47:14"}]}}]},"documentation":{"id":6123,"nodeType":"StructuredDocumentation","src":"27763:307:14","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":6148,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:14","nodeType":"FunctionDefinition","parameters":{"id":6126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6125,"mutability":"mutable","name":"value","nameLocation":"28099:5:14","nodeType":"VariableDeclaration","scope":6148,"src":"28092:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6124,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:14"},"returnParameters":{"id":6129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6128,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:14","nodeType":"VariableDeclaration","scope":6148,"src":"28129:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":6127,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:14"},"scope":6475,"src":"28075:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6173,"nodeType":"Block","src":"28685:148:14","statements":[{"expression":{"id":6161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6156,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6154,"src":"28695:10:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6159,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6151,"src":"28714:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":6157,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:14","typeDescriptions":{}}},"id":6160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":6162,"nodeType":"ExpressionStatement","src":"28695:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6163,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6154,"src":"28734:10:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6164,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6151,"src":"28748:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6172,"nodeType":"IfStatement","src":"28730:97:14","trueBody":{"id":6171,"nodeType":"Block","src":"28755:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":6167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:14","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":6168,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6151,"src":"28810:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6166,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"28776:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6170,"nodeType":"RevertStatement","src":"28769:47:14"}]}}]},"documentation":{"id":6149,"nodeType":"StructuredDocumentation","src":"28301:307:14","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":6174,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:14","nodeType":"FunctionDefinition","parameters":{"id":6152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6151,"mutability":"mutable","name":"value","nameLocation":"28637:5:14","nodeType":"VariableDeclaration","scope":6174,"src":"28630:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6150,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:14"},"returnParameters":{"id":6155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6154,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:14","nodeType":"VariableDeclaration","scope":6174,"src":"28667:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":6153,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:14"},"scope":6475,"src":"28613:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6199,"nodeType":"Block","src":"29223:148:14","statements":[{"expression":{"id":6187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6182,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6180,"src":"29233:10:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"29252:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":6183,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:14","typeDescriptions":{}}},"id":6186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":6188,"nodeType":"ExpressionStatement","src":"29233:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6189,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6180,"src":"29272:10:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"29286:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6198,"nodeType":"IfStatement","src":"29268:97:14","trueBody":{"id":6197,"nodeType":"Block","src":"29293:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":6193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:14","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":6194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"29348:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6192,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"29314:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6196,"nodeType":"RevertStatement","src":"29307:47:14"}]}}]},"documentation":{"id":6175,"nodeType":"StructuredDocumentation","src":"28839:307:14","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":6200,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:14","nodeType":"FunctionDefinition","parameters":{"id":6178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6177,"mutability":"mutable","name":"value","nameLocation":"29175:5:14","nodeType":"VariableDeclaration","scope":6200,"src":"29168:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6176,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:14"},"returnParameters":{"id":6181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6180,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:14","nodeType":"VariableDeclaration","scope":6200,"src":"29205:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":6179,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:14"},"scope":6475,"src":"29151:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6225,"nodeType":"Block","src":"29761:148:14","statements":[{"expression":{"id":6213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6208,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"29771:10:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"29790:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":6209,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:14","typeDescriptions":{}}},"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":6214,"nodeType":"ExpressionStatement","src":"29771:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6215,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"29810:10:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6216,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"29824:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6224,"nodeType":"IfStatement","src":"29806:97:14","trueBody":{"id":6223,"nodeType":"Block","src":"29831:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":6219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:14","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":6220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"29886:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6218,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"29852:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6222,"nodeType":"RevertStatement","src":"29845:47:14"}]}}]},"documentation":{"id":6201,"nodeType":"StructuredDocumentation","src":"29377:307:14","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":6226,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:14","nodeType":"FunctionDefinition","parameters":{"id":6204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6203,"mutability":"mutable","name":"value","nameLocation":"29713:5:14","nodeType":"VariableDeclaration","scope":6226,"src":"29706:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6202,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:14"},"returnParameters":{"id":6207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6206,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:14","nodeType":"VariableDeclaration","scope":6226,"src":"29743:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":6205,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:14"},"scope":6475,"src":"29689:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6251,"nodeType":"Block","src":"30299:148:14","statements":[{"expression":{"id":6239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6234,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"30309:10:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6229,"src":"30328:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":6235,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:14","typeDescriptions":{}}},"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":6240,"nodeType":"ExpressionStatement","src":"30309:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6241,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"30348:10:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6229,"src":"30362:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6250,"nodeType":"IfStatement","src":"30344:97:14","trueBody":{"id":6249,"nodeType":"Block","src":"30369:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":6245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:14","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":6246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6229,"src":"30424:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6244,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"30390:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6248,"nodeType":"RevertStatement","src":"30383:47:14"}]}}]},"documentation":{"id":6227,"nodeType":"StructuredDocumentation","src":"29915:307:14","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":6252,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:14","nodeType":"FunctionDefinition","parameters":{"id":6230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6229,"mutability":"mutable","name":"value","nameLocation":"30251:5:14","nodeType":"VariableDeclaration","scope":6252,"src":"30244:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6228,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:14"},"returnParameters":{"id":6233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6232,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:14","nodeType":"VariableDeclaration","scope":6252,"src":"30281:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":6231,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:14"},"scope":6475,"src":"30227:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6277,"nodeType":"Block","src":"30837:148:14","statements":[{"expression":{"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6260,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"30847:10:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6263,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6255,"src":"30866:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":6261,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:14","typeDescriptions":{}}},"id":6264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":6266,"nodeType":"ExpressionStatement","src":"30847:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6267,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"30886:10:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6268,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6255,"src":"30900:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6276,"nodeType":"IfStatement","src":"30882:97:14","trueBody":{"id":6275,"nodeType":"Block","src":"30907:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":6271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:14","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":6272,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6255,"src":"30962:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6270,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"30928:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6274,"nodeType":"RevertStatement","src":"30921:47:14"}]}}]},"documentation":{"id":6253,"nodeType":"StructuredDocumentation","src":"30453:307:14","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":6278,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:14","nodeType":"FunctionDefinition","parameters":{"id":6256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6255,"mutability":"mutable","name":"value","nameLocation":"30789:5:14","nodeType":"VariableDeclaration","scope":6278,"src":"30782:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6254,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:14"},"returnParameters":{"id":6259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6258,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:14","nodeType":"VariableDeclaration","scope":6278,"src":"30819:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6257,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:14"},"scope":6475,"src":"30765:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6303,"nodeType":"Block","src":"31375:148:14","statements":[{"expression":{"id":6291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6286,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6284,"src":"31385:10:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6289,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6281,"src":"31404:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":6287,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:14","typeDescriptions":{}}},"id":6290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":6292,"nodeType":"ExpressionStatement","src":"31385:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6293,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6284,"src":"31424:10:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6294,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6281,"src":"31438:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6302,"nodeType":"IfStatement","src":"31420:97:14","trueBody":{"id":6301,"nodeType":"Block","src":"31445:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":6297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:14","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":6298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6281,"src":"31500:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6296,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"31466:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6300,"nodeType":"RevertStatement","src":"31459:47:14"}]}}]},"documentation":{"id":6279,"nodeType":"StructuredDocumentation","src":"30991:307:14","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":6304,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:14","nodeType":"FunctionDefinition","parameters":{"id":6282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6281,"mutability":"mutable","name":"value","nameLocation":"31327:5:14","nodeType":"VariableDeclaration","scope":6304,"src":"31320:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6280,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:14"},"returnParameters":{"id":6285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6284,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:14","nodeType":"VariableDeclaration","scope":6304,"src":"31357:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":6283,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:14"},"scope":6475,"src":"31303:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6329,"nodeType":"Block","src":"31913:148:14","statements":[{"expression":{"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6312,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"31923:10:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6315,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6307,"src":"31942:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":6313,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:14","typeDescriptions":{}}},"id":6316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":6318,"nodeType":"ExpressionStatement","src":"31923:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6319,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"31962:10:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6307,"src":"31976:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6328,"nodeType":"IfStatement","src":"31958:97:14","trueBody":{"id":6327,"nodeType":"Block","src":"31983:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":6323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:14","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":6324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6307,"src":"32038:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6322,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"32004:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6326,"nodeType":"RevertStatement","src":"31997:47:14"}]}}]},"documentation":{"id":6305,"nodeType":"StructuredDocumentation","src":"31529:307:14","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":6330,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:14","nodeType":"FunctionDefinition","parameters":{"id":6308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6307,"mutability":"mutable","name":"value","nameLocation":"31865:5:14","nodeType":"VariableDeclaration","scope":6330,"src":"31858:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6306,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:14"},"returnParameters":{"id":6311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6310,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:14","nodeType":"VariableDeclaration","scope":6330,"src":"31895:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":6309,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:14"},"scope":6475,"src":"31841:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6355,"nodeType":"Block","src":"32451:148:14","statements":[{"expression":{"id":6343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6338,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"32461:10:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"32480:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":6339,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:14","typeDescriptions":{}}},"id":6342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":6344,"nodeType":"ExpressionStatement","src":"32461:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6345,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"32500:10:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6346,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"32514:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6354,"nodeType":"IfStatement","src":"32496:97:14","trueBody":{"id":6353,"nodeType":"Block","src":"32521:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":6349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:14","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":6350,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"32576:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6348,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"32542:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6352,"nodeType":"RevertStatement","src":"32535:47:14"}]}}]},"documentation":{"id":6331,"nodeType":"StructuredDocumentation","src":"32067:307:14","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":6356,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:14","nodeType":"FunctionDefinition","parameters":{"id":6334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6333,"mutability":"mutable","name":"value","nameLocation":"32403:5:14","nodeType":"VariableDeclaration","scope":6356,"src":"32396:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6332,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:14"},"returnParameters":{"id":6337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6336,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:14","nodeType":"VariableDeclaration","scope":6356,"src":"32433:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":6335,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:14"},"scope":6475,"src":"32379:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6381,"nodeType":"Block","src":"32989:148:14","statements":[{"expression":{"id":6369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6364,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"32999:10:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"33018:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6365,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:14","typeDescriptions":{}}},"id":6368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6370,"nodeType":"ExpressionStatement","src":"32999:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6371,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"33038:10:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6372,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"33052:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6380,"nodeType":"IfStatement","src":"33034:97:14","trueBody":{"id":6379,"nodeType":"Block","src":"33059:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":6375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:14","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":6376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"33114:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6374,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"33080:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6378,"nodeType":"RevertStatement","src":"33073:47:14"}]}}]},"documentation":{"id":6357,"nodeType":"StructuredDocumentation","src":"32605:307:14","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":6382,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:14","nodeType":"FunctionDefinition","parameters":{"id":6360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6359,"mutability":"mutable","name":"value","nameLocation":"32941:5:14","nodeType":"VariableDeclaration","scope":6382,"src":"32934:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6358,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:14"},"returnParameters":{"id":6363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6362,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:14","nodeType":"VariableDeclaration","scope":6382,"src":"32971:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6361,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:14"},"scope":6475,"src":"32917:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6407,"nodeType":"Block","src":"33527:148:14","statements":[{"expression":{"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6390,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"33537:10:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"33556:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":6391,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:14","typeDescriptions":{}}},"id":6394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":6396,"nodeType":"ExpressionStatement","src":"33537:25:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6397,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"33576:10:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"33590:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6406,"nodeType":"IfStatement","src":"33572:97:14","trueBody":{"id":6405,"nodeType":"Block","src":"33597:72:14","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":6401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:14","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":6402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"33652:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6400,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"33618:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6404,"nodeType":"RevertStatement","src":"33611:47:14"}]}}]},"documentation":{"id":6383,"nodeType":"StructuredDocumentation","src":"33143:307:14","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":6408,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:14","nodeType":"FunctionDefinition","parameters":{"id":6386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6385,"mutability":"mutable","name":"value","nameLocation":"33479:5:14","nodeType":"VariableDeclaration","scope":6408,"src":"33472:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6384,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:14"},"returnParameters":{"id":6389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6388,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:14","nodeType":"VariableDeclaration","scope":6408,"src":"33509:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6387,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:14"},"scope":6475,"src":"33455:220:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6433,"nodeType":"Block","src":"34058:146:14","statements":[{"expression":{"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6416,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"34068:10:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6419,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"34086:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":6417,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:14","typeDescriptions":{}}},"id":6420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":6422,"nodeType":"ExpressionStatement","src":"34068:24:14"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6423,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"34106:10:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"34120:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6432,"nodeType":"IfStatement","src":"34102:96:14","trueBody":{"id":6431,"nodeType":"Block","src":"34127:71:14","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":6427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:14","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":6428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"34181:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6426,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"34148:29:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":6429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6430,"nodeType":"RevertStatement","src":"34141:46:14"}]}}]},"documentation":{"id":6409,"nodeType":"StructuredDocumentation","src":"33681:302:14","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":6434,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:14","nodeType":"FunctionDefinition","parameters":{"id":6412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6411,"mutability":"mutable","name":"value","nameLocation":"34011:5:14","nodeType":"VariableDeclaration","scope":6434,"src":"34004:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6410,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:14"},"returnParameters":{"id":6415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6414,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:14","nodeType":"VariableDeclaration","scope":6434,"src":"34041:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":6413,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:14"},"scope":6475,"src":"33988:216:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6463,"nodeType":"Block","src":"34444:250:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6437,"src":"34557:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":6447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6446,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":6445,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":6449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:14","memberName":"max","nodeType":"MemberAccess","src":"34573:16:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6444,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6443,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:14","typeDescriptions":{}}},"id":6450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6457,"nodeType":"IfStatement","src":"34553:105:14","trueBody":{"id":6456,"nodeType":"Block","src":"34592:66:14","statements":[{"errorCall":{"arguments":[{"id":6453,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6437,"src":"34641:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6452,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4737,"src":"34613:27:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6455,"nodeType":"RevertStatement","src":"34606:41:14"}]}},{"expression":{"arguments":[{"id":6460,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6437,"src":"34681:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6458,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:14","typeDescriptions":{}}},"id":6461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6441,"id":6462,"nodeType":"Return","src":"34667:20:14"}]},"documentation":{"id":6435,"nodeType":"StructuredDocumentation","src":"34210:165:14","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":6464,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:14","nodeType":"FunctionDefinition","parameters":{"id":6438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6437,"mutability":"mutable","name":"value","nameLocation":"34406:5:14","nodeType":"VariableDeclaration","scope":6464,"src":"34398:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6436,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:14"},"returnParameters":{"id":6441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6464,"src":"34436:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6439,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:14"},"scope":6475,"src":"34380:314:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6473,"nodeType":"Block","src":"34853:87:14","statements":[{"AST":{"nativeSrc":"34888:46:14","nodeType":"YulBlock","src":"34888:46:14","statements":[{"nativeSrc":"34902:22:14","nodeType":"YulAssignment","src":"34902:22:14","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:14","nodeType":"YulIdentifier","src":"34921:1:14"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:14","nodeType":"YulIdentifier","src":"34914:6:14"},"nativeSrc":"34914:9:14","nodeType":"YulFunctionCall","src":"34914:9:14"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:14","nodeType":"YulIdentifier","src":"34907:6:14"},"nativeSrc":"34907:17:14","nodeType":"YulFunctionCall","src":"34907:17:14"},"variableNames":[{"name":"u","nativeSrc":"34902:1:14","nodeType":"YulIdentifier","src":"34902:1:14"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":6467,"isOffset":false,"isSlot":false,"src":"34921:1:14","valueSize":1},{"declaration":6470,"isOffset":false,"isSlot":false,"src":"34902:1:14","valueSize":1}],"flags":["memory-safe"],"id":6472,"nodeType":"InlineAssembly","src":"34863:71:14"}]},"documentation":{"id":6465,"nodeType":"StructuredDocumentation","src":"34700:90:14","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":6474,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:14","nodeType":"FunctionDefinition","parameters":{"id":6468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6467,"mutability":"mutable","name":"b","nameLocation":"34816:1:14","nodeType":"VariableDeclaration","scope":6474,"src":"34811:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6466,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:14"},"returnParameters":{"id":6471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6470,"mutability":"mutable","name":"u","nameLocation":"34850:1:14","nodeType":"VariableDeclaration","scope":6474,"src":"34842:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6469,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:14"},"scope":6475,"src":"34795:145:14","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6476,"src":"769:34173:14","usedErrors":[4720,4725,4732,4737],"usedEvents":[]}],"src":"192:34751:14"},"id":14},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SafeCast":[6475],"SignedMath":[6619]},"id":6620,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6477,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:15"},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":6479,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6620,"sourceUnit":6476,"src":"135:40:15","symbolAliases":[{"foreign":{"id":6478,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"143:8:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":6480,"nodeType":"StructuredDocumentation","src":"177:80:15","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":6619,"linearizedBaseContracts":[6619],"name":"SignedMath","nameLocation":"266:10:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":6509,"nodeType":"Block","src":"746:215:15","statements":[{"id":6508,"nodeType":"UncheckedBlock","src":"756:199:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6492,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6487,"src":"894:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6493,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"900:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6487,"src":"904:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"900:5:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6496,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"899:7:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"id":6501,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6483,"src":"932:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6499,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"916:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6475_$","typeString":"type(library SafeCast)"}},"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:6:15","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"916:15:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"909:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6497,"name":"int256","nodeType":"ElementaryTypeName","src":"909:6:15","typeDescriptions":{}}},"id":6503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"909:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"899:44:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6505,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"898:46:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"894:50:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6491,"id":6507,"nodeType":"Return","src":"887:57:15"}]}]},"documentation":{"id":6481,"nodeType":"StructuredDocumentation","src":"283:374:15","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":6510,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"671:7:15","nodeType":"FunctionDefinition","parameters":{"id":6488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6483,"mutability":"mutable","name":"condition","nameLocation":"684:9:15","nodeType":"VariableDeclaration","scope":6510,"src":"679:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6482,"name":"bool","nodeType":"ElementaryTypeName","src":"679:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6485,"mutability":"mutable","name":"a","nameLocation":"702:1:15","nodeType":"VariableDeclaration","scope":6510,"src":"695:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6484,"name":"int256","nodeType":"ElementaryTypeName","src":"695:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6487,"mutability":"mutable","name":"b","nameLocation":"712:1:15","nodeType":"VariableDeclaration","scope":6510,"src":"705:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6486,"name":"int256","nodeType":"ElementaryTypeName","src":"705:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"678:36:15"},"returnParameters":{"id":6491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6490,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6510,"src":"738:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6489,"name":"int256","nodeType":"ElementaryTypeName","src":"738:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"737:8:15"},"scope":6619,"src":"662:299:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6528,"nodeType":"Block","src":"1102:44:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6521,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6513,"src":"1127:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"1131:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1127:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6524,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6513,"src":"1134:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":6525,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"1137:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6520,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6510,"src":"1119:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":6526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6519,"id":6527,"nodeType":"Return","src":"1112:27:15"}]},"documentation":{"id":6511,"nodeType":"StructuredDocumentation","src":"967:66:15","text":" @dev Returns the largest of two signed numbers."},"id":6529,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"1047:3:15","nodeType":"FunctionDefinition","parameters":{"id":6516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6513,"mutability":"mutable","name":"a","nameLocation":"1058:1:15","nodeType":"VariableDeclaration","scope":6529,"src":"1051:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6512,"name":"int256","nodeType":"ElementaryTypeName","src":"1051:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6515,"mutability":"mutable","name":"b","nameLocation":"1068:1:15","nodeType":"VariableDeclaration","scope":6529,"src":"1061:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6514,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1050:20:15"},"returnParameters":{"id":6519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6529,"src":"1094:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6517,"name":"int256","nodeType":"ElementaryTypeName","src":"1094:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1093:8:15"},"scope":6619,"src":"1038:108:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6547,"nodeType":"Block","src":"1288:44:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6540,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6532,"src":"1313:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6541,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"1317:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1313:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6543,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6532,"src":"1320:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":6544,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"1323:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6539,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6510,"src":"1305:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6538,"id":6546,"nodeType":"Return","src":"1298:27:15"}]},"documentation":{"id":6530,"nodeType":"StructuredDocumentation","src":"1152:67:15","text":" @dev Returns the smallest of two signed numbers."},"id":6548,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"1233:3:15","nodeType":"FunctionDefinition","parameters":{"id":6535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6532,"mutability":"mutable","name":"a","nameLocation":"1244:1:15","nodeType":"VariableDeclaration","scope":6548,"src":"1237:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6531,"name":"int256","nodeType":"ElementaryTypeName","src":"1237:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6534,"mutability":"mutable","name":"b","nameLocation":"1254:1:15","nodeType":"VariableDeclaration","scope":6548,"src":"1247:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6533,"name":"int256","nodeType":"ElementaryTypeName","src":"1247:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1236:20:15"},"returnParameters":{"id":6538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6548,"src":"1280:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6536,"name":"int256","nodeType":"ElementaryTypeName","src":"1280:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1279:8:15"},"scope":6619,"src":"1224:108:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6591,"nodeType":"Block","src":"1537:162:15","statements":[{"assignments":[6559],"declarations":[{"constant":false,"id":6559,"mutability":"mutable","name":"x","nameLocation":"1606:1:15","nodeType":"VariableDeclaration","scope":6591,"src":"1599:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6558,"name":"int256","nodeType":"ElementaryTypeName","src":"1599:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6572,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6560,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"1611:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6561,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"1615:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1611:5:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6563,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1610:7:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6564,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"1622:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6565,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"1626:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1622:5:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6567,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1621:7:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":6568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1621:12:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6570,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1620:14:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1610:24:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1599:35:15"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6573,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"1651:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6578,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"1671:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1663:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:15","typeDescriptions":{}}},"id":6579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1663:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":6580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:3:15","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1663:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1656:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6574,"name":"int256","nodeType":"ElementaryTypeName","src":"1656:6:15","typeDescriptions":{}}},"id":6582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6583,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"1685:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6584,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"1689:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1685:5:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6586,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1684:7:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1656:35:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6588,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1655:37:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1651:41:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6557,"id":6590,"nodeType":"Return","src":"1644:48:15"}]},"documentation":{"id":6549,"nodeType":"StructuredDocumentation","src":"1338:126:15","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":6592,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"1478:7:15","nodeType":"FunctionDefinition","parameters":{"id":6554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6551,"mutability":"mutable","name":"a","nameLocation":"1493:1:15","nodeType":"VariableDeclaration","scope":6592,"src":"1486:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6550,"name":"int256","nodeType":"ElementaryTypeName","src":"1486:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6553,"mutability":"mutable","name":"b","nameLocation":"1503:1:15","nodeType":"VariableDeclaration","scope":6592,"src":"1496:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6552,"name":"int256","nodeType":"ElementaryTypeName","src":"1496:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1485:20:15"},"returnParameters":{"id":6557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6592,"src":"1529:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6555,"name":"int256","nodeType":"ElementaryTypeName","src":"1529:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1528:8:15"},"scope":6619,"src":"1469:230:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6617,"nodeType":"Block","src":"1843:767:15","statements":[{"id":6616,"nodeType":"UncheckedBlock","src":"1853:751:15","statements":[{"assignments":[6601],"declarations":[{"constant":false,"id":6601,"mutability":"mutable","name":"mask","nameLocation":"2424:4:15","nodeType":"VariableDeclaration","scope":6616,"src":"2417:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6600,"name":"int256","nodeType":"ElementaryTypeName","src":"2417:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6605,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6602,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6595,"src":"2431:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":6603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2436:3:15","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2431:8:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2417:22:15"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6608,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6595,"src":"2576:1:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6609,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6601,"src":"2580:4:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2576:8:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6611,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2575:10:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6612,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6601,"src":"2588:4:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2575:17:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6606,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:15","typeDescriptions":{}}},"id":6614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2567:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6599,"id":6615,"nodeType":"Return","src":"2560:33:15"}]}]},"documentation":{"id":6593,"nodeType":"StructuredDocumentation","src":"1705:78:15","text":" @dev Returns the absolute unsigned value of a signed value."},"id":6618,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1797:3:15","nodeType":"FunctionDefinition","parameters":{"id":6596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6595,"mutability":"mutable","name":"n","nameLocation":"1808:1:15","nodeType":"VariableDeclaration","scope":6618,"src":"1801:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6594,"name":"int256","nodeType":"ElementaryTypeName","src":"1801:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1800:10:15"},"returnParameters":{"id":6599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6618,"src":"1834:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:9:15"},"scope":6619,"src":"1788:822:15","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6620,"src":"258:2354:15","usedErrors":[],"usedEvents":[]}],"src":"109:2504:15"},"id":15},"contracts/AIToken.sol":{"ast":{"absolutePath":"contracts/AIToken.sol","exportedSymbols":{"AIToken":[6815],"AccessControl":[296],"ECDSA":[2967],"ERC20":[1031],"MessageHashUtils":[3053]},"id":6816,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6621,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:16"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":6623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6816,"sourceUnit":1032,"src":"58:68:16","symbolAliases":[{"foreign":{"id":6622,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"66:5:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","file":"@openzeppelin/contracts/access/AccessControl.sol","id":6625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6816,"sourceUnit":297,"src":"127:79:16","symbolAliases":[{"foreign":{"id":6624,"name":"AccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"135:13:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","id":6627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6816,"sourceUnit":2968,"src":"207:75:16","symbolAliases":[{"foreign":{"id":6626,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2967,"src":"215:5:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","id":6629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6816,"sourceUnit":3054,"src":"283:97:16","symbolAliases":[{"foreign":{"id":6628,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3053,"src":"291:16:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6631,"name":"ERC20","nameLocations":["511:5:16"],"nodeType":"IdentifierPath","referencedDeclaration":1031,"src":"511:5:16"},"id":6632,"nodeType":"InheritanceSpecifier","src":"511:5:16"},{"baseName":{"id":6633,"name":"AccessControl","nameLocations":["518:13:16"],"nodeType":"IdentifierPath","referencedDeclaration":296,"src":"518:13:16"},"id":6634,"nodeType":"InheritanceSpecifier","src":"518:13:16"}],"canonicalName":"AIToken","contractDependencies":[],"contractKind":"contract","documentation":{"id":6630,"nodeType":"StructuredDocumentation","src":"382:109:16","text":"@title AIToken\n @notice ERC20 token that mints units for providers based on attested compute receipts"},"fullyImplemented":true,"id":6815,"linearizedBaseContracts":[6815,296,3077,3089,379,1031,421,1135,1109,1165],"name":"AIToken","nameLocation":"500:7:16","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6637,"libraryName":{"id":6635,"name":"ECDSA","nameLocations":["544:5:16"],"nodeType":"IdentifierPath","referencedDeclaration":2967,"src":"544:5:16"},"nodeType":"UsingForDirective","src":"538:24:16","typeName":{"id":6636,"name":"bytes32","nodeType":"ElementaryTypeName","src":"554:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":6640,"libraryName":{"id":6638,"name":"MessageHashUtils","nameLocations":["573:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":3053,"src":"573:16:16"},"nodeType":"UsingForDirective","src":"567:35:16","typeName":{"id":6639,"name":"bytes32","nodeType":"ElementaryTypeName","src":"594:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":true,"functionSelector":"6b366cb5","id":6645,"mutability":"constant","name":"COORDINATOR_ROLE","nameLocation":"632:16:16","nodeType":"VariableDeclaration","scope":6815,"src":"608:72:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6641,"name":"bytes32","nodeType":"ElementaryTypeName","src":"608:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"434f4f5244494e41544f525f524f4c45","id":6643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"661:18:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc","typeString":"literal_string \"COORDINATOR_ROLE\""},"value":"COORDINATOR_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc","typeString":"literal_string \"COORDINATOR_ROLE\""}],"id":6642,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"651:9:16","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"651:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"62723644","id":6650,"mutability":"constant","name":"ATTESTOR_ROLE","nameLocation":"710:13:16","nodeType":"VariableDeclaration","scope":6815,"src":"686:66:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6646,"name":"bytes32","nodeType":"ElementaryTypeName","src":"686:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4154544553544f525f524f4c45","id":6648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"736:15:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_a7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e4","typeString":"literal_string \"ATTESTOR_ROLE\""},"value":"ATTESTOR_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e4","typeString":"literal_string \"ATTESTOR_ROLE\""}],"id":6647,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"726:9:16","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"726:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"documentation":{"id":6651,"nodeType":"StructuredDocumentation","src":"759:60:16","text":"@notice Tracks consumed receipt hashes to prevent replay"},"functionSelector":"e0e27fa7","id":6655,"mutability":"mutable","name":"consumedReceipts","nameLocation":"856:16:16","nodeType":"VariableDeclaration","scope":6815,"src":"824:48:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"typeName":{"id":6654,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"832:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"824:24:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6653,"name":"bool","nodeType":"ElementaryTypeName","src":"843:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"anonymous":false,"eventSelector":"62bdd9e89a55dce0e95b0356eac19c65ef5afdd870381a93e270dcd072f13f02","id":6665,"name":"ReceiptConsumed","nameLocation":"885:15:16","nodeType":"EventDefinition","parameters":{"id":6664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6657,"indexed":true,"mutability":"mutable","name":"receiptHash","nameLocation":"917:11:16","nodeType":"VariableDeclaration","scope":6665,"src":"901:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6656,"name":"bytes32","nodeType":"ElementaryTypeName","src":"901:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6659,"indexed":true,"mutability":"mutable","name":"provider","nameLocation":"946:8:16","nodeType":"VariableDeclaration","scope":6665,"src":"930:24:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6658,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6661,"indexed":false,"mutability":"mutable","name":"units","nameLocation":"964:5:16","nodeType":"VariableDeclaration","scope":6665,"src":"956:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6660,"name":"uint256","nodeType":"ElementaryTypeName","src":"956:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6663,"indexed":true,"mutability":"mutable","name":"attestor","nameLocation":"987:8:16","nodeType":"VariableDeclaration","scope":6665,"src":"971:24:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6662,"name":"address","nodeType":"ElementaryTypeName","src":"971:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"900:96:16"},"src":"879:118:16"},{"body":{"id":6679,"nodeType":"Block","src":"1054:54:16","statements":[{"expression":{"arguments":[{"id":6675,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"1075:18:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6676,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1095:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6674,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"1064:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":6677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1064:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6678,"nodeType":"ExpressionStatement","src":"1064:37:16"}]},"id":6680,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4149546f6b656e","id":6670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1036:9:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_2380fc16d429b0f49911a52ed14568854d399f8e584d842e653af036dd5f9e79","typeString":"literal_string \"AIToken\""},"value":"AIToken"},{"hexValue":"414954","id":6671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1047:5:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e1ce1e2d08c0b94c3ad6a16d314322403c10f92a4da609c5d91be67c61491a3","typeString":"literal_string \"AIT\""},"value":"AIT"}],"id":6672,"kind":"baseConstructorSpecifier","modifierName":{"id":6669,"name":"ERC20","nameLocations":["1030:5:16"],"nodeType":"IdentifierPath","referencedDeclaration":1031,"src":"1030:5:16"},"nodeType":"ModifierInvocation","src":"1030:23:16"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6667,"mutability":"mutable","name":"admin","nameLocation":"1023:5:16","nodeType":"VariableDeclaration","scope":6680,"src":"1015:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6666,"name":"address","nodeType":"ElementaryTypeName","src":"1015:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1014:15:16"},"returnParameters":{"id":6673,"nodeType":"ParameterList","parameters":[],"src":"1054:0:16"},"scope":6815,"src":"1003:105:16","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6761,"nodeType":"Block","src":"1663:544:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6696,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6683,"src":"1681:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1701:1:16","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":6698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1693:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6697,"name":"address","nodeType":"ElementaryTypeName","src":"1693:7:16","typeDescriptions":{}}},"id":6700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1693:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1681:22:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726f7669646572","id":6702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1705:18:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046","typeString":"literal_string \"invalid provider\""},"value":"invalid provider"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046","typeString":"literal_string \"invalid provider\""}],"id":6695,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1673:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:51:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6704,"nodeType":"ExpressionStatement","src":"1673:51:16"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6706,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"1742:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1750:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1742:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420756e697473","id":6709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1753:15:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_71f86cf417ff59fbe7c0fe4d47bc3a27555955742eedee4393c55e5ebd9347cc","typeString":"literal_string \"invalid units\""},"value":"invalid units"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71f86cf417ff59fbe7c0fe4d47bc3a27555955742eedee4393c55e5ebd9347cc","typeString":"literal_string \"invalid units\""}],"id":6705,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1734:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1734:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6711,"nodeType":"ExpressionStatement","src":"1734:35:16"},{"expression":{"arguments":[{"id":6716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1787:30:16","subExpression":{"baseExpression":{"id":6713,"name":"consumedReceipts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"1788:16:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":6715,"indexExpression":{"id":6714,"name":"receiptHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6687,"src":"1805:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1788:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7265636569707420616c726561647920636f6e73756d6564","id":6717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1819:26:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_aa5e8e776638b05fbc051ae185efa3102982bf1d06944b75bb2872751226b5c4","typeString":"literal_string \"receipt already consumed\""},"value":"receipt already consumed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_aa5e8e776638b05fbc051ae185efa3102982bf1d06944b75bb2872751226b5c4","typeString":"literal_string \"receipt already consumed\""}],"id":6712,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1779:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1779:67:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6719,"nodeType":"ExpressionStatement","src":"1779:67:16"},{"assignments":[6721],"declarations":[{"constant":false,"id":6721,"mutability":"mutable","name":"digest","nameLocation":"1865:6:16","nodeType":"VariableDeclaration","scope":6761,"src":"1857:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1857:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6727,"initialValue":{"arguments":[{"id":6723,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6683,"src":"1886:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6724,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"1896:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6725,"name":"receiptHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6687,"src":"1903:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6722,"name":"_mintDigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"1874:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) view returns (bytes32)"}},"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1874:41:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1857:58:16"},{"assignments":[6729],"declarations":[{"constant":false,"id":6729,"mutability":"mutable","name":"attestor","nameLocation":"1933:8:16","nodeType":"VariableDeclaration","scope":6761,"src":"1925:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6728,"name":"address","nodeType":"ElementaryTypeName","src":"1925:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6734,"initialValue":{"arguments":[{"id":6732,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6689,"src":"1959:9:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":6730,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6721,"src":"1944:6:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1951:7:16","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":2723,"src":"1944:14:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":6733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1944:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1925:44:16"},{"expression":{"arguments":[{"arguments":[{"id":6737,"name":"ATTESTOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6650,"src":"1995:13:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6738,"name":"attestor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6729,"src":"2010:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6736,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"1987:7:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":6739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1987:32:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c6964206174746573746f72207369676e6174757265","id":6740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2021:28:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_c347248987f70db0011250d554ae2fccfb8a4b603bfebf1c3d0af4f63efc2c60","typeString":"literal_string \"invalid attestor signature\""},"value":"invalid attestor signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c347248987f70db0011250d554ae2fccfb8a4b603bfebf1c3d0af4f63efc2c60","typeString":"literal_string \"invalid attestor signature\""}],"id":6735,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1979:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1979:71:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6742,"nodeType":"ExpressionStatement","src":"1979:71:16"},{"expression":{"id":6747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6743,"name":"consumedReceipts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"2061:16:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":6745,"indexExpression":{"id":6744,"name":"receiptHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6687,"src":"2078:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2061:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":6746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2093:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2061:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6748,"nodeType":"ExpressionStatement","src":"2061:36:16"},{"expression":{"arguments":[{"id":6750,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6683,"src":"2113:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6751,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"2123:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6749,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"2107:5:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2107:22:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6753,"nodeType":"ExpressionStatement","src":"2107:22:16"},{"eventCall":{"arguments":[{"id":6755,"name":"receiptHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6687,"src":"2161:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6756,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6683,"src":"2174:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6757,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"2184:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6758,"name":"attestor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6729,"src":"2191:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6754,"name":"ReceiptConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6665,"src":"2145:15:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (bytes32,address,uint256,address)"}},"id":6759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2145:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6760,"nodeType":"EmitStatement","src":"2140:60:16"}]},"documentation":{"id":6681,"nodeType":"StructuredDocumentation","src":"1114:365:16","text":"@notice Mint tokens for a provider when coordinator submits a valid attested receipt\n @param provider Address of the compute provider receiving minted tokens\n @param units Amount of tokens to mint\n @param receiptHash Unique hash representing the off-chain receipt\n @param signature Coordinator-attested signature authorizing the mint"},"functionSelector":"336c739c","id":6762,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":6692,"name":"COORDINATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"1645:16:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":6693,"kind":"modifierInvocation","modifierName":{"id":6691,"name":"onlyRole","nameLocations":["1636:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"1636:8:16"},"nodeType":"ModifierInvocation","src":"1636:26:16"}],"name":"mintWithReceipt","nameLocation":"1493:15:16","nodeType":"FunctionDefinition","parameters":{"id":6690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6683,"mutability":"mutable","name":"provider","nameLocation":"1526:8:16","nodeType":"VariableDeclaration","scope":6762,"src":"1518:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6682,"name":"address","nodeType":"ElementaryTypeName","src":"1518:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6685,"mutability":"mutable","name":"units","nameLocation":"1552:5:16","nodeType":"VariableDeclaration","scope":6762,"src":"1544:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6684,"name":"uint256","nodeType":"ElementaryTypeName","src":"1544:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6687,"mutability":"mutable","name":"receiptHash","nameLocation":"1575:11:16","nodeType":"VariableDeclaration","scope":6762,"src":"1567:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1567:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6689,"mutability":"mutable","name":"signature","nameLocation":"1611:9:16","nodeType":"VariableDeclaration","scope":6762,"src":"1596:24:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6688,"name":"bytes","nodeType":"ElementaryTypeName","src":"1596:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1508:118:16"},"returnParameters":{"id":6694,"nodeType":"ParameterList","parameters":[],"src":"1663:0:16"},"scope":6815,"src":"1484:723:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6780,"nodeType":"Block","src":"2392:65:16","statements":[{"expression":{"arguments":[{"id":6775,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6765,"src":"2421:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6776,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"2431:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6777,"name":"receiptHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"2438:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6774,"name":"_mintDigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"2409:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) view returns (bytes32)"}},"id":6778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:41:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6773,"id":6779,"nodeType":"Return","src":"2402:48:16"}]},"documentation":{"id":6763,"nodeType":"StructuredDocumentation","src":"2213:68:16","text":"@notice Helper to compute the signed digest required for minting"},"functionSelector":"272a7b79","id":6781,"implemented":true,"kind":"function","modifiers":[],"name":"mintDigest","nameLocation":"2295:10:16","nodeType":"FunctionDefinition","parameters":{"id":6770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6765,"mutability":"mutable","name":"provider","nameLocation":"2314:8:16","nodeType":"VariableDeclaration","scope":6781,"src":"2306:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6764,"name":"address","nodeType":"ElementaryTypeName","src":"2306:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6767,"mutability":"mutable","name":"units","nameLocation":"2332:5:16","nodeType":"VariableDeclaration","scope":6781,"src":"2324:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6766,"name":"uint256","nodeType":"ElementaryTypeName","src":"2324:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6769,"mutability":"mutable","name":"receiptHash","nameLocation":"2347:11:16","nodeType":"VariableDeclaration","scope":6781,"src":"2339:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6768,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2339:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2305:54:16"},"returnParameters":{"id":6773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6781,"src":"2383:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6771,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2383:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2382:9:16"},"scope":6815,"src":"2286:171:16","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":6813,"nodeType":"Block","src":"2570:171:16","statements":[{"assignments":[6793],"declarations":[{"constant":false,"id":6793,"mutability":"mutable","name":"structHash","nameLocation":"2588:10:16","nodeType":"VariableDeclaration","scope":6813,"src":"2580:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2580:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6808,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":6797,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2622:5:16","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2628:7:16","memberName":"chainid","nodeType":"MemberAccess","src":"2622:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":6801,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2645:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_AIToken_$6815","typeString":"contract AIToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AIToken_$6815","typeString":"contract AIToken"}],"id":6800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2637:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6799,"name":"address","nodeType":"ElementaryTypeName","src":"2637:7:16","typeDescriptions":{}}},"id":6802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2637:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6803,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"2652:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6804,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6785,"src":"2662:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6805,"name":"receiptHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6787,"src":"2669:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":6795,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2611:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2615:6:16","memberName":"encode","nodeType":"MemberAccess","src":"2611:10:16","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2611:70:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6794,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2601:9:16","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2601:81:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2580:102:16"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6809,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6793,"src":"2699:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2710:22:16","memberName":"toEthSignedMessageHash","nodeType":"MemberAccess","referencedDeclaration":2982,"src":"2699:33:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":6811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2699:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6791,"id":6812,"nodeType":"Return","src":"2692:42:16"}]},"id":6814,"implemented":true,"kind":"function","modifiers":[],"name":"_mintDigest","nameLocation":"2472:11:16","nodeType":"FunctionDefinition","parameters":{"id":6788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6783,"mutability":"mutable","name":"provider","nameLocation":"2492:8:16","nodeType":"VariableDeclaration","scope":6814,"src":"2484:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6782,"name":"address","nodeType":"ElementaryTypeName","src":"2484:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6785,"mutability":"mutable","name":"units","nameLocation":"2510:5:16","nodeType":"VariableDeclaration","scope":6814,"src":"2502:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6784,"name":"uint256","nodeType":"ElementaryTypeName","src":"2502:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6787,"mutability":"mutable","name":"receiptHash","nameLocation":"2525:11:16","nodeType":"VariableDeclaration","scope":6814,"src":"2517:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2517:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2483:54:16"},"returnParameters":{"id":6791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6814,"src":"2561:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6789,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2561:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2560:9:16"},"scope":6815,"src":"2463:278:16","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6816,"src":"491:2252:16","usedErrors":[306,309,391,396,401,410,415,420,2630,2635,2640],"usedEvents":[318,327,336,1043,1052,6665]}],"src":"32:2712:16"},"id":16},"contracts/AITokenRegistry.sol":{"ast":{"absolutePath":"contracts/AITokenRegistry.sol","exportedSymbols":{"AITokenRegistry":[6968],"AccessControl":[296]},"id":6969,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6817,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:17"},{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","file":"@openzeppelin/contracts/access/AccessControl.sol","id":6819,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6969,"sourceUnit":297,"src":"58:79:17","symbolAliases":[{"foreign":{"id":6818,"name":"AccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"66:13:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6821,"name":"AccessControl","nameLocations":["278:13:17"],"nodeType":"IdentifierPath","referencedDeclaration":296,"src":"278:13:17"},"id":6822,"nodeType":"InheritanceSpecifier","src":"278:13:17"}],"canonicalName":"AITokenRegistry","contractDependencies":[],"contractKind":"contract","documentation":{"id":6820,"nodeType":"StructuredDocumentation","src":"139:111:17","text":"@title AITokenRegistry\n @notice Tracks permitted providers and staking requirements for AIToken minting"},"fullyImplemented":true,"id":6968,"linearizedBaseContracts":[6968,296,3077,3089,379,1165],"name":"AITokenRegistry","nameLocation":"259:15:17","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"6b366cb5","id":6827,"mutability":"constant","name":"COORDINATOR_ROLE","nameLocation":"322:16:17","nodeType":"VariableDeclaration","scope":6968,"src":"298:72:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"298:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"434f4f5244494e41544f525f524f4c45","id":6825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"351:18:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc","typeString":"literal_string \"COORDINATOR_ROLE\""},"value":"COORDINATOR_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc","typeString":"literal_string \"COORDINATOR_ROLE\""}],"id":6824,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"341:9:17","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"341:29:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"canonicalName":"AITokenRegistry.ProviderInfo","id":6832,"members":[{"constant":false,"id":6829,"mutability":"mutable","name":"active","nameLocation":"412:6:17","nodeType":"VariableDeclaration","scope":6832,"src":"407:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6828,"name":"bool","nodeType":"ElementaryTypeName","src":"407:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6831,"mutability":"mutable","name":"collateral","nameLocation":"436:10:17","nodeType":"VariableDeclaration","scope":6832,"src":"428:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6830,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ProviderInfo","nameLocation":"384:12:17","nodeType":"StructDefinition","scope":6968,"src":"377:76:17","visibility":"public"},{"constant":false,"functionSelector":"0787bc27","id":6837,"mutability":"mutable","name":"providers","nameLocation":"499:9:17","nodeType":"VariableDeclaration","scope":6968,"src":"459:49:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ProviderInfo_$6832_storage_$","typeString":"mapping(address => struct AITokenRegistry.ProviderInfo)"},"typeName":{"id":6836,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6833,"name":"address","nodeType":"ElementaryTypeName","src":"467:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"459:32:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ProviderInfo_$6832_storage_$","typeString":"mapping(address => struct AITokenRegistry.ProviderInfo)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6835,"nodeType":"UserDefinedTypeName","pathNode":{"id":6834,"name":"ProviderInfo","nameLocations":["478:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":6832,"src":"478:12:17"},"referencedDeclaration":6832,"src":"478:12:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage_ptr","typeString":"struct AITokenRegistry.ProviderInfo"}}},"visibility":"public"},{"anonymous":false,"eventSelector":"90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80","id":6843,"name":"ProviderRegistered","nameLocation":"521:18:17","nodeType":"EventDefinition","parameters":{"id":6842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6839,"indexed":true,"mutability":"mutable","name":"provider","nameLocation":"556:8:17","nodeType":"VariableDeclaration","scope":6843,"src":"540:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6838,"name":"address","nodeType":"ElementaryTypeName","src":"540:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6841,"indexed":false,"mutability":"mutable","name":"collateral","nameLocation":"574:10:17","nodeType":"VariableDeclaration","scope":6843,"src":"566:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6840,"name":"uint256","nodeType":"ElementaryTypeName","src":"566:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"539:46:17"},"src":"515:71:17"},{"anonymous":false,"eventSelector":"e226f4be7d881611b5a3ddc83f2e771728014b8012359a29890cd3d670c43dc8","id":6851,"name":"ProviderUpdated","nameLocation":"597:15:17","nodeType":"EventDefinition","parameters":{"id":6850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6845,"indexed":true,"mutability":"mutable","name":"provider","nameLocation":"629:8:17","nodeType":"VariableDeclaration","scope":6851,"src":"613:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6844,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6847,"indexed":false,"mutability":"mutable","name":"active","nameLocation":"644:6:17","nodeType":"VariableDeclaration","scope":6851,"src":"639:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6846,"name":"bool","nodeType":"ElementaryTypeName","src":"639:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6849,"indexed":false,"mutability":"mutable","name":"collateral","nameLocation":"660:10:17","nodeType":"VariableDeclaration","scope":6851,"src":"652:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6848,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"612:59:17"},"src":"591:81:17"},{"body":{"id":6861,"nodeType":"Block","src":"705:54:17","statements":[{"expression":{"arguments":[{"id":6857,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"726:18:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6858,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6853,"src":"746:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6856,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"715:10:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"715:37:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6860,"nodeType":"ExpressionStatement","src":"715:37:17"}]},"id":6862,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6853,"mutability":"mutable","name":"admin","nameLocation":"698:5:17","nodeType":"VariableDeclaration","scope":6862,"src":"690:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6852,"name":"address","nodeType":"ElementaryTypeName","src":"690:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"689:15:17"},"returnParameters":{"id":6855,"nodeType":"ParameterList","parameters":[],"src":"705:0:17"},"scope":6968,"src":"678:81:17","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6905,"nodeType":"Block","src":"865:275:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6873,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6864,"src":"883:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"903:1:17","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":6875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"895:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6874,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:17","typeDescriptions":{}}},"id":6877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"895:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"883:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726f7669646572","id":6879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"907:18:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046","typeString":"literal_string \"invalid provider\""},"value":"invalid provider"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046","typeString":"literal_string \"invalid provider\""}],"id":6872,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"875:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"875:51:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6881,"nodeType":"ExpressionStatement","src":"875:51:17"},{"expression":{"arguments":[{"id":6887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"944:27:17","subExpression":{"expression":{"baseExpression":{"id":6883,"name":"providers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"945:9:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ProviderInfo_$6832_storage_$","typeString":"mapping(address => struct AITokenRegistry.ProviderInfo storage ref)"}},"id":6885,"indexExpression":{"id":6884,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6864,"src":"955:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"945:19:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage","typeString":"struct AITokenRegistry.ProviderInfo storage ref"}},"id":6886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"965:6:17","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":6829,"src":"945:26:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c72656164792072656769737465726564","id":6888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"973:20:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0","typeString":"literal_string \"already registered\""},"value":"already registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0","typeString":"literal_string \"already registered\""}],"id":6882,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"936:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"936:58:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6890,"nodeType":"ExpressionStatement","src":"936:58:17"},{"expression":{"id":6898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6891,"name":"providers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"1004:9:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ProviderInfo_$6832_storage_$","typeString":"mapping(address => struct AITokenRegistry.ProviderInfo storage ref)"}},"id":6893,"indexExpression":{"id":6892,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6864,"src":"1014:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1004:19:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage","typeString":"struct AITokenRegistry.ProviderInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"74727565","id":6895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1048:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":6896,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6866,"src":"1066:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6894,"name":"ProviderInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"1026:12:17","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ProviderInfo_$6832_storage_ptr_$","typeString":"type(struct AITokenRegistry.ProviderInfo storage pointer)"}},"id":6897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1040:6:17","1054:10:17"],"names":["active","collateral"],"nodeType":"FunctionCall","src":"1026:52:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_memory_ptr","typeString":"struct AITokenRegistry.ProviderInfo memory"}},"src":"1004:74:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage","typeString":"struct AITokenRegistry.ProviderInfo storage ref"}},"id":6899,"nodeType":"ExpressionStatement","src":"1004:74:17"},{"eventCall":{"arguments":[{"id":6901,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6864,"src":"1112:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6902,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6866,"src":"1122:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6900,"name":"ProviderRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6843,"src":"1093:18:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1093:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6904,"nodeType":"EmitStatement","src":"1088:45:17"}]},"functionSelector":"1af431a7","id":6906,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":6869,"name":"COORDINATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"847:16:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":6870,"kind":"modifierInvocation","modifierName":{"id":6868,"name":"onlyRole","nameLocations":["838:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"838:8:17"},"nodeType":"ModifierInvocation","src":"838:26:17"}],"name":"registerProvider","nameLocation":"774:16:17","nodeType":"FunctionDefinition","parameters":{"id":6867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6864,"mutability":"mutable","name":"provider","nameLocation":"799:8:17","nodeType":"VariableDeclaration","scope":6906,"src":"791:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6863,"name":"address","nodeType":"ElementaryTypeName","src":"791:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6866,"mutability":"mutable","name":"collateral","nameLocation":"817:10:17","nodeType":"VariableDeclaration","scope":6906,"src":"809:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6865,"name":"uint256","nodeType":"ElementaryTypeName","src":"809:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"790:38:17"},"returnParameters":{"id":6871,"nodeType":"ParameterList","parameters":[],"src":"865:0:17"},"scope":6968,"src":"765:375:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6953,"nodeType":"Block","src":"1287:296:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6919,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"1305:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:17","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":6921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1317:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6920,"name":"address","nodeType":"ElementaryTypeName","src":"1317:7:17","typeDescriptions":{}}},"id":6923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1317:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1305:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726f7669646572","id":6925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1329:18:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046","typeString":"literal_string \"invalid provider\""},"value":"invalid provider"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046","typeString":"literal_string \"invalid provider\""}],"id":6918,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1297:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1297:51:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6927,"nodeType":"ExpressionStatement","src":"1297:51:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":6929,"name":"providers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"1366:9:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ProviderInfo_$6832_storage_$","typeString":"mapping(address => struct AITokenRegistry.ProviderInfo storage ref)"}},"id":6931,"indexExpression":{"id":6930,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"1376:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1366:19:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage","typeString":"struct AITokenRegistry.ProviderInfo storage ref"}},"id":6932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1386:6:17","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":6829,"src":"1366:26:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":6933,"name":"active","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"1396:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1366:36:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f7669646572206e6f742072656769737465726564","id":6935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1404:25:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_e143b88e92bd2246064657188c9e074c5d06818368b800ac48075028f680939c","typeString":"literal_string \"provider not registered\""},"value":"provider not registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e143b88e92bd2246064657188c9e074c5d06818368b800ac48075028f680939c","typeString":"literal_string \"provider not registered\""}],"id":6928,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1358:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1358:72:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6937,"nodeType":"ExpressionStatement","src":"1358:72:17"},{"expression":{"id":6945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6938,"name":"providers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"1440:9:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ProviderInfo_$6832_storage_$","typeString":"mapping(address => struct AITokenRegistry.ProviderInfo storage ref)"}},"id":6940,"indexExpression":{"id":6939,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"1450:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1440:19:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage","typeString":"struct AITokenRegistry.ProviderInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6942,"name":"active","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"1484:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6943,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"1504:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6941,"name":"ProviderInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"1462:12:17","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ProviderInfo_$6832_storage_ptr_$","typeString":"type(struct AITokenRegistry.ProviderInfo storage pointer)"}},"id":6944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1476:6:17","1492:10:17"],"names":["active","collateral"],"nodeType":"FunctionCall","src":"1462:54:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_memory_ptr","typeString":"struct AITokenRegistry.ProviderInfo memory"}},"src":"1440:76:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage","typeString":"struct AITokenRegistry.ProviderInfo storage ref"}},"id":6946,"nodeType":"ExpressionStatement","src":"1440:76:17"},{"eventCall":{"arguments":[{"id":6948,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"1547:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6949,"name":"active","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"1557:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6950,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"1565:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6947,"name":"ProviderUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6851,"src":"1531:15:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (address,bool,uint256)"}},"id":6951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:45:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6952,"nodeType":"EmitStatement","src":"1526:50:17"}]},"functionSelector":"d1190565","id":6954,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":6915,"name":"COORDINATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"1269:16:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":6916,"kind":"modifierInvocation","modifierName":{"id":6914,"name":"onlyRole","nameLocations":["1260:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"1260:8:17"},"nodeType":"ModifierInvocation","src":"1260:26:17"}],"name":"updateProvider","nameLocation":"1155:14:17","nodeType":"FunctionDefinition","parameters":{"id":6913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6908,"mutability":"mutable","name":"provider","nameLocation":"1187:8:17","nodeType":"VariableDeclaration","scope":6954,"src":"1179:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6907,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6910,"mutability":"mutable","name":"active","nameLocation":"1210:6:17","nodeType":"VariableDeclaration","scope":6954,"src":"1205:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6909,"name":"bool","nodeType":"ElementaryTypeName","src":"1205:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6912,"mutability":"mutable","name":"collateral","nameLocation":"1234:10:17","nodeType":"VariableDeclaration","scope":6954,"src":"1226:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6911,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1169:81:17"},"returnParameters":{"id":6917,"nodeType":"ParameterList","parameters":[],"src":"1287:0:17"},"scope":6968,"src":"1146:437:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6966,"nodeType":"Block","src":"1673:43:17","statements":[{"expression":{"baseExpression":{"id":6962,"name":"providers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"1690:9:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ProviderInfo_$6832_storage_$","typeString":"mapping(address => struct AITokenRegistry.ProviderInfo storage ref)"}},"id":6964,"indexExpression":{"id":6963,"name":"provider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6956,"src":"1700:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1690:19:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage","typeString":"struct AITokenRegistry.ProviderInfo storage ref"}},"functionReturnParameters":6961,"id":6965,"nodeType":"Return","src":"1683:26:17"}]},"functionSelector":"3ae25916","id":6967,"implemented":true,"kind":"function","modifiers":[],"name":"providerInfo","nameLocation":"1598:12:17","nodeType":"FunctionDefinition","parameters":{"id":6957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6956,"mutability":"mutable","name":"provider","nameLocation":"1619:8:17","nodeType":"VariableDeclaration","scope":6967,"src":"1611:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6955,"name":"address","nodeType":"ElementaryTypeName","src":"1611:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1610:18:17"},"returnParameters":{"id":6961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6967,"src":"1652:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_memory_ptr","typeString":"struct AITokenRegistry.ProviderInfo"},"typeName":{"id":6959,"nodeType":"UserDefinedTypeName","pathNode":{"id":6958,"name":"ProviderInfo","nameLocations":["1652:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":6832,"src":"1652:12:17"},"referencedDeclaration":6832,"src":"1652:12:17","typeDescriptions":{"typeIdentifier":"t_struct$_ProviderInfo_$6832_storage_ptr","typeString":"struct AITokenRegistry.ProviderInfo"}},"visibility":"internal"}],"src":"1651:21:17"},"scope":6968,"src":"1589:127:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6969,"src":"250:1468:17","usedErrors":[306,309],"usedEvents":[318,327,336,6843,6851]}],"src":"32:1687:17"},"id":17}},"contracts":{"@openzeppelin/contracts/access/AccessControl.sol":{"AccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x1a6b4f6b7798ab80929d491b89d5427a9b3338c0fd1acd0ba325f69c6f1646af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bb7f346c12a14dc622bc105ce3c47202fbc89f4b153a28a63bb68193297330c\",\"dweb:/ipfs/QmagwF8P3bUBXwdo159ueEnY9dLSvEWwK24kk2op58egwG\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"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.24+commit.e11b9ed9\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fec73f632edd47d0e7ae9933b51e8f4da78eb465818c4263bebf6623ab05aff164736f6c63430008180033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID 0xC7 EXTCODEHASH PUSH4 0x2EDD47D0 0xE7 0xAE SWAP10 CALLER 0xB5 0x1E DUP16 0x4D 0xA7 DUP15 0xB4 PUSH6 0x818C4263BEBF PUSH7 0x23AB05AFF16473 PUSH16 0x6C634300081800330000000000000000 ","sourceMap":"657:1315:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fec73f632edd47d0e7ae9933b51e8f4da78eb465818c4263bebf6623ab05aff164736f6c63430008180033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID 0xC7 EXTCODEHASH PUSH4 0x2EDD47D0 0xE7 0xAE SWAP10 CALLER 0xB5 0x1E DUP16 0x4D 0xA7 DUP15 0xB4 PUSH6 0x818C4263BEBF PUSH7 0x23AB05AFF16473 PUSH16 0x6C634300081800330000000000000000 ","sourceMap":"657:1315:7:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3fa6b95cf4f76e64227a9b2373ccb228efd9715fd7983e0646867999cceb9fb64736f6c63430008180033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 STATICCALL PUSH12 0x95CF4F76E64227A9B2373CCB 0x22 DUP15 REVERT SWAP8 ISZERO REVERT PUSH26 0x83E0646867999CCEB9FB64736F6C634300081800330000000000 ","sourceMap":"297:18982:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;297:18982:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3fa6b95cf4f76e64227a9b2373ccb228efd9715fd7983e0646867999cceb9fb64736f6c63430008180033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 STATICCALL PUSH12 0x95CF4F76E64227A9B2373CCB 0x22 DUP15 REVERT SWAP8 ISZERO REVERT PUSH26 0x83E0646867999CCEB9FB64736F6C634300081800330000000000 ","sourceMap":"297:18982:8:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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/cryptography/ECDSA.sol":{"ECDSA":{"abi":[{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a02ae933cd95f2ee943a9a3e5cbf4c6b7a6f7cc463d2cb58fac8fce23a0ba09464736f6c63430008180033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 0x2A 0xE9 CALLER 0xCD SWAP6 CALLCODE 0xEE SWAP5 GASPRICE SWAP11 RETURNDATACOPY TLOAD 0xBF 0x4C PUSH12 0x7A6F7CC463D2CB58FAC8FCE2 GASPRICE SIGNEXTEND LOG0 SWAP5 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"344:7470:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;344:7470:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a02ae933cd95f2ee943a9a3e5cbf4c6b7a6f7cc463d2cb58fac8fce23a0ba09464736f6c63430008180033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 0x2A 0xE9 CALLER 0xCD SWAP6 CALLCODE 0xEE SWAP5 GASPRICE SWAP11 RETURNDATACOPY TLOAD 0xBF 0x4C PUSH12 0x7A6F7CC463D2CB58FAC8FCE2 GASPRICE SIGNEXTEND LOG0 SWAP5 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"344:7470:9:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"MessageHashUtils":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122004768bd881d67da99e00ad73ad4392265131c4d4610e2df195f48d6d1cddc06164736f6c63430008180033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV PUSH23 0x8BD881D67DA99E00AD73AD4392265131C4D4610E2DF195 DELEGATECALL DUP14 PUSH14 0x1CDDC06164736F6C634300081800 CALLER ","sourceMap":"521:3729:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;521:3729:10;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122004768bd881d67da99e00ad73ad4392265131c4d4610e2df195f48d6d1cddc06164736f6c63430008180033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV PUSH23 0x8BD881D67DA99E00AD73AD4392265131C4D4610E2DF195 DELEGATECALL DUP14 PUSH14 0x1CDDC06164736F6C634300081800 CALLER ","sourceMap":"521:3729:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing. The library provides methods for generating a hash of a message that conforms to the https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712] specifications.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":\"MessageHashUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@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/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7690e42315e6899c9737c1a5db38b11240b326a07950b4befbf4ae90b02e56464736f6c63430008180033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 PUSH10 0xE42315E6899C9737C1A TSTORE 0xB3 DUP12 GT 0x24 SIGNEXTEND ORIGIN PUSH11 0x7950B4BEFBF4AE90B02E5 PUSH5 0x64736F6C63 NUMBER STOP ADDMOD XOR STOP CALLER ","sourceMap":"281:31863:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:31863:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7690e42315e6899c9737c1a5db38b11240b326a07950b4befbf4ae90b02e56464736f6c63430008180033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 PUSH10 0xE42315E6899C9737C1A TSTORE 0xB3 DUP12 GT 0x24 SIGNEXTEND ORIGIN PUSH11 0x7950B4BEFBF4AE90B02E5 PUSH5 0x64736F6C63 NUMBER STOP ADDMOD XOR STOP CALLER ","sourceMap":"281:31863:13:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c97bba8d553a67561101942b2a9afa3628667de55efed8df898d3aab783793c64736f6c63430008180033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR SWAP8 0xBB 0xA8 0xD5 MSTORE8 0xA6 PUSH22 0x61101942B2A9AFA3628667DE55EFED8DF898D3AAB783 PUSH26 0x3C64736F6C634300081800330000000000000000000000000000 ","sourceMap":"769:34173:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34173:14;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c97bba8d553a67561101942b2a9afa3628667de55efed8df898d3aab783793c64736f6c63430008180033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR SWAP8 0xBB 0xA8 0xD5 MSTORE8 0xA6 PUSH22 0x61101942B2A9AFA3628667DE55EFED8DF898D3AAB783 PUSH26 0x3C64736F6C634300081800330000000000000000000000000000 ","sourceMap":"769:34173:14:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220680917e17f715636462292a9029e0058e294bcd5d4d4fc83a420501ebb37147664736f6c63430008180033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x917E17F7156364622 SWAP3 0xA9 MUL SWAP15 STOP PC 0xE2 SWAP5 0xBC 0xD5 0xD4 0xD4 0xFC DUP4 LOG4 KECCAK256 POP 0x1E 0xBB CALLDATACOPY EQ PUSH23 0x64736F6C63430008180033000000000000000000000000 ","sourceMap":"258:2354:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;258:2354:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220680917e17f715636462292a9029e0058e294bcd5d4d4fc83a420501ebb37147664736f6c63430008180033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x917E17F7156364622 SWAP3 0xA9 MUL SWAP15 STOP PC 0xE2 SWAP5 0xBC 0xD5 0xD4 0xD4 0xFC DUP4 LOG4 KECCAK256 POP 0x1E 0xBB CALLDATACOPY EQ PUSH23 0x64736F6C63430008180033000000000000000000000000 ","sourceMap":"258:2354:15:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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/AIToken.sol":{"AIToken":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"receiptHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":false,"internalType":"uint256","name":"units","type":"uint256"},{"indexed":true,"internalType":"address","name":"attestor","type":"address"}],"name":"ReceiptConsumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ATTESTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COORDINATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"consumedReceipts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"uint256","name":"units","type":"uint256"},{"internalType":"bytes32","name":"receiptHash","type":"bytes32"}],"name":"mintDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"uint256","name":"units","type":"uint256"},{"internalType":"bytes32","name":"receiptHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintWithReceipt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_568":{"entryPoint":null,"id":568,"parameterSlots":2,"returnSlots":0},"@_6680":{"entryPoint":null,"id":6680,"parameterSlots":1,"returnSlots":0},"@_grantRole_257":{"entryPoint":170,"id":257,"parameterSlots":2,"returnSlots":1},"@_msgSender_1147":{"entryPoint":null,"id":1147,"parameterSlots":0,"returnSlots":1},"@hasRole_81":{"entryPoint":null,"id":81,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":349,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":481,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":566,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":421,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":399,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3018:18","nodeType":"YulBlock","src":"0:3018:18","statements":[{"nativeSrc":"6:3:18","nodeType":"YulBlock","src":"6:3:18","statements":[]},{"body":{"nativeSrc":"95:209:18","nodeType":"YulBlock","src":"95:209:18","statements":[{"body":{"nativeSrc":"141:16:18","nodeType":"YulBlock","src":"141:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:18","nodeType":"YulLiteral","src":"150:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:18","nodeType":"YulLiteral","src":"153:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:18","nodeType":"YulIdentifier","src":"143:6:18"},"nativeSrc":"143:12:18","nodeType":"YulFunctionCall","src":"143:12:18"},"nativeSrc":"143:12:18","nodeType":"YulExpressionStatement","src":"143:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:18","nodeType":"YulIdentifier","src":"116:7:18"},{"name":"headStart","nativeSrc":"125:9:18","nodeType":"YulIdentifier","src":"125:9:18"}],"functionName":{"name":"sub","nativeSrc":"112:3:18","nodeType":"YulIdentifier","src":"112:3:18"},"nativeSrc":"112:23:18","nodeType":"YulFunctionCall","src":"112:23:18"},{"kind":"number","nativeSrc":"137:2:18","nodeType":"YulLiteral","src":"137:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:18","nodeType":"YulIdentifier","src":"108:3:18"},"nativeSrc":"108:32:18","nodeType":"YulFunctionCall","src":"108:32:18"},"nativeSrc":"105:52:18","nodeType":"YulIf","src":"105:52:18"},{"nativeSrc":"166:29:18","nodeType":"YulVariableDeclaration","src":"166:29:18","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:18","nodeType":"YulIdentifier","src":"185:9:18"}],"functionName":{"name":"mload","nativeSrc":"179:5:18","nodeType":"YulIdentifier","src":"179:5:18"},"nativeSrc":"179:16:18","nodeType":"YulFunctionCall","src":"179:16:18"},"variables":[{"name":"value","nativeSrc":"170:5:18","nodeType":"YulTypedName","src":"170:5:18","type":""}]},{"body":{"nativeSrc":"258:16:18","nodeType":"YulBlock","src":"258:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:18","nodeType":"YulLiteral","src":"267:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:18","nodeType":"YulLiteral","src":"270:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:18","nodeType":"YulIdentifier","src":"260:6:18"},"nativeSrc":"260:12:18","nodeType":"YulFunctionCall","src":"260:12:18"},"nativeSrc":"260:12:18","nodeType":"YulExpressionStatement","src":"260:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:18","nodeType":"YulIdentifier","src":"217:5:18"},{"arguments":[{"name":"value","nativeSrc":"228:5:18","nodeType":"YulIdentifier","src":"228:5:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:18","nodeType":"YulLiteral","src":"243:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:18","nodeType":"YulLiteral","src":"248:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:18","nodeType":"YulIdentifier","src":"239:3:18"},"nativeSrc":"239:11:18","nodeType":"YulFunctionCall","src":"239:11:18"},{"kind":"number","nativeSrc":"252:1:18","nodeType":"YulLiteral","src":"252:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:18","nodeType":"YulIdentifier","src":"235:3:18"},"nativeSrc":"235:19:18","nodeType":"YulFunctionCall","src":"235:19:18"}],"functionName":{"name":"and","nativeSrc":"224:3:18","nodeType":"YulIdentifier","src":"224:3:18"},"nativeSrc":"224:31:18","nodeType":"YulFunctionCall","src":"224:31:18"}],"functionName":{"name":"eq","nativeSrc":"214:2:18","nodeType":"YulIdentifier","src":"214:2:18"},"nativeSrc":"214:42:18","nodeType":"YulFunctionCall","src":"214:42:18"}],"functionName":{"name":"iszero","nativeSrc":"207:6:18","nodeType":"YulIdentifier","src":"207:6:18"},"nativeSrc":"207:50:18","nodeType":"YulFunctionCall","src":"207:50:18"},"nativeSrc":"204:70:18","nodeType":"YulIf","src":"204:70:18"},{"nativeSrc":"283:15:18","nodeType":"YulAssignment","src":"283:15:18","value":{"name":"value","nativeSrc":"293:5:18","nodeType":"YulIdentifier","src":"293:5:18"},"variableNames":[{"name":"value0","nativeSrc":"283:6:18","nodeType":"YulIdentifier","src":"283:6:18"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:18","nodeType":"YulTypedName","src":"61:9:18","type":""},{"name":"dataEnd","nativeSrc":"72:7:18","nodeType":"YulTypedName","src":"72:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:18","nodeType":"YulTypedName","src":"84:6:18","type":""}],"src":"14:290:18"},{"body":{"nativeSrc":"341:95:18","nodeType":"YulBlock","src":"341:95:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"358:1:18","nodeType":"YulLiteral","src":"358:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"365:3:18","nodeType":"YulLiteral","src":"365:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"370:10:18","nodeType":"YulLiteral","src":"370:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"361:3:18","nodeType":"YulIdentifier","src":"361:3:18"},"nativeSrc":"361:20:18","nodeType":"YulFunctionCall","src":"361:20:18"}],"functionName":{"name":"mstore","nativeSrc":"351:6:18","nodeType":"YulIdentifier","src":"351:6:18"},"nativeSrc":"351:31:18","nodeType":"YulFunctionCall","src":"351:31:18"},"nativeSrc":"351:31:18","nodeType":"YulExpressionStatement","src":"351:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"398:1:18","nodeType":"YulLiteral","src":"398:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"401:4:18","nodeType":"YulLiteral","src":"401:4:18","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"391:6:18","nodeType":"YulIdentifier","src":"391:6:18"},"nativeSrc":"391:15:18","nodeType":"YulFunctionCall","src":"391:15:18"},"nativeSrc":"391:15:18","nodeType":"YulExpressionStatement","src":"391:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"422:1:18","nodeType":"YulLiteral","src":"422:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"425:4:18","nodeType":"YulLiteral","src":"425:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"415:6:18","nodeType":"YulIdentifier","src":"415:6:18"},"nativeSrc":"415:15:18","nodeType":"YulFunctionCall","src":"415:15:18"},"nativeSrc":"415:15:18","nodeType":"YulExpressionStatement","src":"415:15:18"}]},"name":"panic_error_0x41","nativeSrc":"309:127:18","nodeType":"YulFunctionDefinition","src":"309:127:18"},{"body":{"nativeSrc":"496:325:18","nodeType":"YulBlock","src":"496:325:18","statements":[{"nativeSrc":"506:22:18","nodeType":"YulAssignment","src":"506:22:18","value":{"arguments":[{"kind":"number","nativeSrc":"520:1:18","nodeType":"YulLiteral","src":"520:1:18","type":"","value":"1"},{"name":"data","nativeSrc":"523:4:18","nodeType":"YulIdentifier","src":"523:4:18"}],"functionName":{"name":"shr","nativeSrc":"516:3:18","nodeType":"YulIdentifier","src":"516:3:18"},"nativeSrc":"516:12:18","nodeType":"YulFunctionCall","src":"516:12:18"},"variableNames":[{"name":"length","nativeSrc":"506:6:18","nodeType":"YulIdentifier","src":"506:6:18"}]},{"nativeSrc":"537:38:18","nodeType":"YulVariableDeclaration","src":"537:38:18","value":{"arguments":[{"name":"data","nativeSrc":"567:4:18","nodeType":"YulIdentifier","src":"567:4:18"},{"kind":"number","nativeSrc":"573:1:18","nodeType":"YulLiteral","src":"573:1:18","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"563:3:18","nodeType":"YulIdentifier","src":"563:3:18"},"nativeSrc":"563:12:18","nodeType":"YulFunctionCall","src":"563:12:18"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"541:18:18","nodeType":"YulTypedName","src":"541:18:18","type":""}]},{"body":{"nativeSrc":"614:31:18","nodeType":"YulBlock","src":"614:31:18","statements":[{"nativeSrc":"616:27:18","nodeType":"YulAssignment","src":"616:27:18","value":{"arguments":[{"name":"length","nativeSrc":"630:6:18","nodeType":"YulIdentifier","src":"630:6:18"},{"kind":"number","nativeSrc":"638:4:18","nodeType":"YulLiteral","src":"638:4:18","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"626:3:18","nodeType":"YulIdentifier","src":"626:3:18"},"nativeSrc":"626:17:18","nodeType":"YulFunctionCall","src":"626:17:18"},"variableNames":[{"name":"length","nativeSrc":"616:6:18","nodeType":"YulIdentifier","src":"616:6:18"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"594:18:18","nodeType":"YulIdentifier","src":"594:18:18"}],"functionName":{"name":"iszero","nativeSrc":"587:6:18","nodeType":"YulIdentifier","src":"587:6:18"},"nativeSrc":"587:26:18","nodeType":"YulFunctionCall","src":"587:26:18"},"nativeSrc":"584:61:18","nodeType":"YulIf","src":"584:61:18"},{"body":{"nativeSrc":"704:111:18","nodeType":"YulBlock","src":"704:111:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"725:1:18","nodeType":"YulLiteral","src":"725:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"732:3:18","nodeType":"YulLiteral","src":"732:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"737:10:18","nodeType":"YulLiteral","src":"737:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"728:3:18","nodeType":"YulIdentifier","src":"728:3:18"},"nativeSrc":"728:20:18","nodeType":"YulFunctionCall","src":"728:20:18"}],"functionName":{"name":"mstore","nativeSrc":"718:6:18","nodeType":"YulIdentifier","src":"718:6:18"},"nativeSrc":"718:31:18","nodeType":"YulFunctionCall","src":"718:31:18"},"nativeSrc":"718:31:18","nodeType":"YulExpressionStatement","src":"718:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"769:1:18","nodeType":"YulLiteral","src":"769:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"772:4:18","nodeType":"YulLiteral","src":"772:4:18","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"762:6:18","nodeType":"YulIdentifier","src":"762:6:18"},"nativeSrc":"762:15:18","nodeType":"YulFunctionCall","src":"762:15:18"},"nativeSrc":"762:15:18","nodeType":"YulExpressionStatement","src":"762:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"797:1:18","nodeType":"YulLiteral","src":"797:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"800:4:18","nodeType":"YulLiteral","src":"800:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"790:6:18","nodeType":"YulIdentifier","src":"790:6:18"},"nativeSrc":"790:15:18","nodeType":"YulFunctionCall","src":"790:15:18"},"nativeSrc":"790:15:18","nodeType":"YulExpressionStatement","src":"790:15:18"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"660:18:18","nodeType":"YulIdentifier","src":"660:18:18"},{"arguments":[{"name":"length","nativeSrc":"683:6:18","nodeType":"YulIdentifier","src":"683:6:18"},{"kind":"number","nativeSrc":"691:2:18","nodeType":"YulLiteral","src":"691:2:18","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"680:2:18","nodeType":"YulIdentifier","src":"680:2:18"},"nativeSrc":"680:14:18","nodeType":"YulFunctionCall","src":"680:14:18"}],"functionName":{"name":"eq","nativeSrc":"657:2:18","nodeType":"YulIdentifier","src":"657:2:18"},"nativeSrc":"657:38:18","nodeType":"YulFunctionCall","src":"657:38:18"},"nativeSrc":"654:161:18","nodeType":"YulIf","src":"654:161:18"}]},"name":"extract_byte_array_length","nativeSrc":"441:380:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"476:4:18","nodeType":"YulTypedName","src":"476:4:18","type":""}],"returnVariables":[{"name":"length","nativeSrc":"485:6:18","nodeType":"YulTypedName","src":"485:6:18","type":""}],"src":"441:380:18"},{"body":{"nativeSrc":"882:65:18","nodeType":"YulBlock","src":"882:65:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"899:1:18","nodeType":"YulLiteral","src":"899:1:18","type":"","value":"0"},{"name":"ptr","nativeSrc":"902:3:18","nodeType":"YulIdentifier","src":"902:3:18"}],"functionName":{"name":"mstore","nativeSrc":"892:6:18","nodeType":"YulIdentifier","src":"892:6:18"},"nativeSrc":"892:14:18","nodeType":"YulFunctionCall","src":"892:14:18"},"nativeSrc":"892:14:18","nodeType":"YulExpressionStatement","src":"892:14:18"},{"nativeSrc":"915:26:18","nodeType":"YulAssignment","src":"915:26:18","value":{"arguments":[{"kind":"number","nativeSrc":"933:1:18","nodeType":"YulLiteral","src":"933:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"936:4:18","nodeType":"YulLiteral","src":"936:4:18","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"923:9:18","nodeType":"YulIdentifier","src":"923:9:18"},"nativeSrc":"923:18:18","nodeType":"YulFunctionCall","src":"923:18:18"},"variableNames":[{"name":"data","nativeSrc":"915:4:18","nodeType":"YulIdentifier","src":"915:4:18"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"826:121:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"865:3:18","nodeType":"YulTypedName","src":"865:3:18","type":""}],"returnVariables":[{"name":"data","nativeSrc":"873:4:18","nodeType":"YulTypedName","src":"873:4:18","type":""}],"src":"826:121:18"},{"body":{"nativeSrc":"1033:462:18","nodeType":"YulBlock","src":"1033:462:18","statements":[{"body":{"nativeSrc":"1066:423:18","nodeType":"YulBlock","src":"1066:423:18","statements":[{"nativeSrc":"1080:11:18","nodeType":"YulVariableDeclaration","src":"1080:11:18","value":{"kind":"number","nativeSrc":"1090:1:18","nodeType":"YulLiteral","src":"1090:1:18","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"1084:2:18","nodeType":"YulTypedName","src":"1084:2:18","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1111:1:18","nodeType":"YulLiteral","src":"1111:1:18","type":"","value":"0"},{"name":"array","nativeSrc":"1114:5:18","nodeType":"YulIdentifier","src":"1114:5:18"}],"functionName":{"name":"mstore","nativeSrc":"1104:6:18","nodeType":"YulIdentifier","src":"1104:6:18"},"nativeSrc":"1104:16:18","nodeType":"YulFunctionCall","src":"1104:16:18"},"nativeSrc":"1104:16:18","nodeType":"YulExpressionStatement","src":"1104:16:18"},{"nativeSrc":"1133:30:18","nodeType":"YulVariableDeclaration","src":"1133:30:18","value":{"arguments":[{"kind":"number","nativeSrc":"1155:1:18","nodeType":"YulLiteral","src":"1155:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1158:4:18","nodeType":"YulLiteral","src":"1158:4:18","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"1145:9:18","nodeType":"YulIdentifier","src":"1145:9:18"},"nativeSrc":"1145:18:18","nodeType":"YulFunctionCall","src":"1145:18:18"},"variables":[{"name":"data","nativeSrc":"1137:4:18","nodeType":"YulTypedName","src":"1137:4:18","type":""}]},{"nativeSrc":"1176:57:18","nodeType":"YulVariableDeclaration","src":"1176:57:18","value":{"arguments":[{"name":"data","nativeSrc":"1199:4:18","nodeType":"YulIdentifier","src":"1199:4:18"},{"arguments":[{"kind":"number","nativeSrc":"1209:1:18","nodeType":"YulLiteral","src":"1209:1:18","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"1216:10:18","nodeType":"YulIdentifier","src":"1216:10:18"},{"kind":"number","nativeSrc":"1228:2:18","nodeType":"YulLiteral","src":"1228:2:18","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1212:3:18","nodeType":"YulIdentifier","src":"1212:3:18"},"nativeSrc":"1212:19:18","nodeType":"YulFunctionCall","src":"1212:19:18"}],"functionName":{"name":"shr","nativeSrc":"1205:3:18","nodeType":"YulIdentifier","src":"1205:3:18"},"nativeSrc":"1205:27:18","nodeType":"YulFunctionCall","src":"1205:27:18"}],"functionName":{"name":"add","nativeSrc":"1195:3:18","nodeType":"YulIdentifier","src":"1195:3:18"},"nativeSrc":"1195:38:18","nodeType":"YulFunctionCall","src":"1195:38:18"},"variables":[{"name":"deleteStart","nativeSrc":"1180:11:18","nodeType":"YulTypedName","src":"1180:11:18","type":""}]},{"body":{"nativeSrc":"1270:23:18","nodeType":"YulBlock","src":"1270:23:18","statements":[{"nativeSrc":"1272:19:18","nodeType":"YulAssignment","src":"1272:19:18","value":{"name":"data","nativeSrc":"1287:4:18","nodeType":"YulIdentifier","src":"1287:4:18"},"variableNames":[{"name":"deleteStart","nativeSrc":"1272:11:18","nodeType":"YulIdentifier","src":"1272:11:18"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"1252:10:18","nodeType":"YulIdentifier","src":"1252:10:18"},{"kind":"number","nativeSrc":"1264:4:18","nodeType":"YulLiteral","src":"1264:4:18","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"1249:2:18","nodeType":"YulIdentifier","src":"1249:2:18"},"nativeSrc":"1249:20:18","nodeType":"YulFunctionCall","src":"1249:20:18"},"nativeSrc":"1246:47:18","nodeType":"YulIf","src":"1246:47:18"},{"nativeSrc":"1306:41:18","nodeType":"YulVariableDeclaration","src":"1306:41:18","value":{"arguments":[{"name":"data","nativeSrc":"1320:4:18","nodeType":"YulIdentifier","src":"1320:4:18"},{"arguments":[{"kind":"number","nativeSrc":"1330:1:18","nodeType":"YulLiteral","src":"1330:1:18","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"1337:3:18","nodeType":"YulIdentifier","src":"1337:3:18"},{"kind":"number","nativeSrc":"1342:2:18","nodeType":"YulLiteral","src":"1342:2:18","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1333:3:18","nodeType":"YulIdentifier","src":"1333:3:18"},"nativeSrc":"1333:12:18","nodeType":"YulFunctionCall","src":"1333:12:18"}],"functionName":{"name":"shr","nativeSrc":"1326:3:18","nodeType":"YulIdentifier","src":"1326:3:18"},"nativeSrc":"1326:20:18","nodeType":"YulFunctionCall","src":"1326:20:18"}],"functionName":{"name":"add","nativeSrc":"1316:3:18","nodeType":"YulIdentifier","src":"1316:3:18"},"nativeSrc":"1316:31:18","nodeType":"YulFunctionCall","src":"1316:31:18"},"variables":[{"name":"_2","nativeSrc":"1310:2:18","nodeType":"YulTypedName","src":"1310:2:18","type":""}]},{"nativeSrc":"1360:24:18","nodeType":"YulVariableDeclaration","src":"1360:24:18","value":{"name":"deleteStart","nativeSrc":"1373:11:18","nodeType":"YulIdentifier","src":"1373:11:18"},"variables":[{"name":"start","nativeSrc":"1364:5:18","nodeType":"YulTypedName","src":"1364:5:18","type":""}]},{"body":{"nativeSrc":"1458:21:18","nodeType":"YulBlock","src":"1458:21:18","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"1467:5:18","nodeType":"YulIdentifier","src":"1467:5:18"},{"name":"_1","nativeSrc":"1474:2:18","nodeType":"YulIdentifier","src":"1474:2:18"}],"functionName":{"name":"sstore","nativeSrc":"1460:6:18","nodeType":"YulIdentifier","src":"1460:6:18"},"nativeSrc":"1460:17:18","nodeType":"YulFunctionCall","src":"1460:17:18"},"nativeSrc":"1460:17:18","nodeType":"YulExpressionStatement","src":"1460:17:18"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"1408:5:18","nodeType":"YulIdentifier","src":"1408:5:18"},{"name":"_2","nativeSrc":"1415:2:18","nodeType":"YulIdentifier","src":"1415:2:18"}],"functionName":{"name":"lt","nativeSrc":"1405:2:18","nodeType":"YulIdentifier","src":"1405:2:18"},"nativeSrc":"1405:13:18","nodeType":"YulFunctionCall","src":"1405:13:18"},"nativeSrc":"1397:82:18","nodeType":"YulForLoop","post":{"nativeSrc":"1419:26:18","nodeType":"YulBlock","src":"1419:26:18","statements":[{"nativeSrc":"1421:22:18","nodeType":"YulAssignment","src":"1421:22:18","value":{"arguments":[{"name":"start","nativeSrc":"1434:5:18","nodeType":"YulIdentifier","src":"1434:5:18"},{"kind":"number","nativeSrc":"1441:1:18","nodeType":"YulLiteral","src":"1441:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"1430:3:18","nodeType":"YulIdentifier","src":"1430:3:18"},"nativeSrc":"1430:13:18","nodeType":"YulFunctionCall","src":"1430:13:18"},"variableNames":[{"name":"start","nativeSrc":"1421:5:18","nodeType":"YulIdentifier","src":"1421:5:18"}]}]},"pre":{"nativeSrc":"1401:3:18","nodeType":"YulBlock","src":"1401:3:18","statements":[]},"src":"1397:82:18"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"1049:3:18","nodeType":"YulIdentifier","src":"1049:3:18"},{"kind":"number","nativeSrc":"1054:2:18","nodeType":"YulLiteral","src":"1054:2:18","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"1046:2:18","nodeType":"YulIdentifier","src":"1046:2:18"},"nativeSrc":"1046:11:18","nodeType":"YulFunctionCall","src":"1046:11:18"},"nativeSrc":"1043:446:18","nodeType":"YulIf","src":"1043:446:18"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"952:543:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"1005:5:18","nodeType":"YulTypedName","src":"1005:5:18","type":""},{"name":"len","nativeSrc":"1012:3:18","nodeType":"YulTypedName","src":"1012:3:18","type":""},{"name":"startIndex","nativeSrc":"1017:10:18","nodeType":"YulTypedName","src":"1017:10:18","type":""}],"src":"952:543:18"},{"body":{"nativeSrc":"1585:81:18","nodeType":"YulBlock","src":"1585:81:18","statements":[{"nativeSrc":"1595:65:18","nodeType":"YulAssignment","src":"1595:65:18","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"1610:4:18","nodeType":"YulIdentifier","src":"1610:4:18"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1628:1:18","nodeType":"YulLiteral","src":"1628:1:18","type":"","value":"3"},{"name":"len","nativeSrc":"1631:3:18","nodeType":"YulIdentifier","src":"1631:3:18"}],"functionName":{"name":"shl","nativeSrc":"1624:3:18","nodeType":"YulIdentifier","src":"1624:3:18"},"nativeSrc":"1624:11:18","nodeType":"YulFunctionCall","src":"1624:11:18"},{"arguments":[{"kind":"number","nativeSrc":"1641:1:18","nodeType":"YulLiteral","src":"1641:1:18","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1637:3:18","nodeType":"YulIdentifier","src":"1637:3:18"},"nativeSrc":"1637:6:18","nodeType":"YulFunctionCall","src":"1637:6:18"}],"functionName":{"name":"shr","nativeSrc":"1620:3:18","nodeType":"YulIdentifier","src":"1620:3:18"},"nativeSrc":"1620:24:18","nodeType":"YulFunctionCall","src":"1620:24:18"}],"functionName":{"name":"not","nativeSrc":"1616:3:18","nodeType":"YulIdentifier","src":"1616:3:18"},"nativeSrc":"1616:29:18","nodeType":"YulFunctionCall","src":"1616:29:18"}],"functionName":{"name":"and","nativeSrc":"1606:3:18","nodeType":"YulIdentifier","src":"1606:3:18"},"nativeSrc":"1606:40:18","nodeType":"YulFunctionCall","src":"1606:40:18"},{"arguments":[{"kind":"number","nativeSrc":"1652:1:18","nodeType":"YulLiteral","src":"1652:1:18","type":"","value":"1"},{"name":"len","nativeSrc":"1655:3:18","nodeType":"YulIdentifier","src":"1655:3:18"}],"functionName":{"name":"shl","nativeSrc":"1648:3:18","nodeType":"YulIdentifier","src":"1648:3:18"},"nativeSrc":"1648:11:18","nodeType":"YulFunctionCall","src":"1648:11:18"}],"functionName":{"name":"or","nativeSrc":"1603:2:18","nodeType":"YulIdentifier","src":"1603:2:18"},"nativeSrc":"1603:57:18","nodeType":"YulFunctionCall","src":"1603:57:18"},"variableNames":[{"name":"used","nativeSrc":"1595:4:18","nodeType":"YulIdentifier","src":"1595:4:18"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"1500:166:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1562:4:18","nodeType":"YulTypedName","src":"1562:4:18","type":""},{"name":"len","nativeSrc":"1568:3:18","nodeType":"YulTypedName","src":"1568:3:18","type":""}],"returnVariables":[{"name":"used","nativeSrc":"1576:4:18","nodeType":"YulTypedName","src":"1576:4:18","type":""}],"src":"1500:166:18"},{"body":{"nativeSrc":"1767:1249:18","nodeType":"YulBlock","src":"1767:1249:18","statements":[{"nativeSrc":"1777:24:18","nodeType":"YulVariableDeclaration","src":"1777:24:18","value":{"arguments":[{"name":"src","nativeSrc":"1797:3:18","nodeType":"YulIdentifier","src":"1797:3:18"}],"functionName":{"name":"mload","nativeSrc":"1791:5:18","nodeType":"YulIdentifier","src":"1791:5:18"},"nativeSrc":"1791:10:18","nodeType":"YulFunctionCall","src":"1791:10:18"},"variables":[{"name":"newLen","nativeSrc":"1781:6:18","nodeType":"YulTypedName","src":"1781:6:18","type":""}]},{"body":{"nativeSrc":"1844:22:18","nodeType":"YulBlock","src":"1844:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1846:16:18","nodeType":"YulIdentifier","src":"1846:16:18"},"nativeSrc":"1846:18:18","nodeType":"YulFunctionCall","src":"1846:18:18"},"nativeSrc":"1846:18:18","nodeType":"YulExpressionStatement","src":"1846:18:18"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"1816:6:18","nodeType":"YulIdentifier","src":"1816:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1832:2:18","nodeType":"YulLiteral","src":"1832:2:18","type":"","value":"64"},{"kind":"number","nativeSrc":"1836:1:18","nodeType":"YulLiteral","src":"1836:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1828:3:18","nodeType":"YulIdentifier","src":"1828:3:18"},"nativeSrc":"1828:10:18","nodeType":"YulFunctionCall","src":"1828:10:18"},{"kind":"number","nativeSrc":"1840:1:18","nodeType":"YulLiteral","src":"1840:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1824:3:18","nodeType":"YulIdentifier","src":"1824:3:18"},"nativeSrc":"1824:18:18","nodeType":"YulFunctionCall","src":"1824:18:18"}],"functionName":{"name":"gt","nativeSrc":"1813:2:18","nodeType":"YulIdentifier","src":"1813:2:18"},"nativeSrc":"1813:30:18","nodeType":"YulFunctionCall","src":"1813:30:18"},"nativeSrc":"1810:56:18","nodeType":"YulIf","src":"1810:56:18"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"1919:4:18","nodeType":"YulIdentifier","src":"1919:4:18"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"1957:4:18","nodeType":"YulIdentifier","src":"1957:4:18"}],"functionName":{"name":"sload","nativeSrc":"1951:5:18","nodeType":"YulIdentifier","src":"1951:5:18"},"nativeSrc":"1951:11:18","nodeType":"YulFunctionCall","src":"1951:11:18"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"1925:25:18","nodeType":"YulIdentifier","src":"1925:25:18"},"nativeSrc":"1925:38:18","nodeType":"YulFunctionCall","src":"1925:38:18"},{"name":"newLen","nativeSrc":"1965:6:18","nodeType":"YulIdentifier","src":"1965:6:18"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"1875:43:18","nodeType":"YulIdentifier","src":"1875:43:18"},"nativeSrc":"1875:97:18","nodeType":"YulFunctionCall","src":"1875:97:18"},"nativeSrc":"1875:97:18","nodeType":"YulExpressionStatement","src":"1875:97:18"},{"nativeSrc":"1981:18:18","nodeType":"YulVariableDeclaration","src":"1981:18:18","value":{"kind":"number","nativeSrc":"1998:1:18","nodeType":"YulLiteral","src":"1998:1:18","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"1985:9:18","nodeType":"YulTypedName","src":"1985:9:18","type":""}]},{"nativeSrc":"2008:23:18","nodeType":"YulVariableDeclaration","src":"2008:23:18","value":{"kind":"number","nativeSrc":"2027:4:18","nodeType":"YulLiteral","src":"2027:4:18","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nativeSrc":"2012:11:18","nodeType":"YulTypedName","src":"2012:11:18","type":""}]},{"nativeSrc":"2040:17:18","nodeType":"YulAssignment","src":"2040:17:18","value":{"kind":"number","nativeSrc":"2053:4:18","nodeType":"YulLiteral","src":"2053:4:18","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"2040:9:18","nodeType":"YulIdentifier","src":"2040:9:18"}]},{"cases":[{"body":{"nativeSrc":"2103:656:18","nodeType":"YulBlock","src":"2103:656:18","statements":[{"nativeSrc":"2117:35:18","nodeType":"YulVariableDeclaration","src":"2117:35:18","value":{"arguments":[{"name":"newLen","nativeSrc":"2136:6:18","nodeType":"YulIdentifier","src":"2136:6:18"},{"arguments":[{"kind":"number","nativeSrc":"2148:2:18","nodeType":"YulLiteral","src":"2148:2:18","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2144:3:18","nodeType":"YulIdentifier","src":"2144:3:18"},"nativeSrc":"2144:7:18","nodeType":"YulFunctionCall","src":"2144:7:18"}],"functionName":{"name":"and","nativeSrc":"2132:3:18","nodeType":"YulIdentifier","src":"2132:3:18"},"nativeSrc":"2132:20:18","nodeType":"YulFunctionCall","src":"2132:20:18"},"variables":[{"name":"loopEnd","nativeSrc":"2121:7:18","nodeType":"YulTypedName","src":"2121:7:18","type":""}]},{"nativeSrc":"2165:49:18","nodeType":"YulVariableDeclaration","src":"2165:49:18","value":{"arguments":[{"name":"slot","nativeSrc":"2209:4:18","nodeType":"YulIdentifier","src":"2209:4:18"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"2179:29:18","nodeType":"YulIdentifier","src":"2179:29:18"},"nativeSrc":"2179:35:18","nodeType":"YulFunctionCall","src":"2179:35:18"},"variables":[{"name":"dstPtr","nativeSrc":"2169:6:18","nodeType":"YulTypedName","src":"2169:6:18","type":""}]},{"nativeSrc":"2227:10:18","nodeType":"YulVariableDeclaration","src":"2227:10:18","value":{"kind":"number","nativeSrc":"2236:1:18","nodeType":"YulLiteral","src":"2236:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2231:1:18","nodeType":"YulTypedName","src":"2231:1:18","type":""}]},{"body":{"nativeSrc":"2314:172:18","nodeType":"YulBlock","src":"2314:172:18","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"2339:6:18","nodeType":"YulIdentifier","src":"2339:6:18"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2357:3:18","nodeType":"YulIdentifier","src":"2357:3:18"},{"name":"srcOffset","nativeSrc":"2362:9:18","nodeType":"YulIdentifier","src":"2362:9:18"}],"functionName":{"name":"add","nativeSrc":"2353:3:18","nodeType":"YulIdentifier","src":"2353:3:18"},"nativeSrc":"2353:19:18","nodeType":"YulFunctionCall","src":"2353:19:18"}],"functionName":{"name":"mload","nativeSrc":"2347:5:18","nodeType":"YulIdentifier","src":"2347:5:18"},"nativeSrc":"2347:26:18","nodeType":"YulFunctionCall","src":"2347:26:18"}],"functionName":{"name":"sstore","nativeSrc":"2332:6:18","nodeType":"YulIdentifier","src":"2332:6:18"},"nativeSrc":"2332:42:18","nodeType":"YulFunctionCall","src":"2332:42:18"},"nativeSrc":"2332:42:18","nodeType":"YulExpressionStatement","src":"2332:42:18"},{"nativeSrc":"2391:24:18","nodeType":"YulAssignment","src":"2391:24:18","value":{"arguments":[{"name":"dstPtr","nativeSrc":"2405:6:18","nodeType":"YulIdentifier","src":"2405:6:18"},{"kind":"number","nativeSrc":"2413:1:18","nodeType":"YulLiteral","src":"2413:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2401:3:18","nodeType":"YulIdentifier","src":"2401:3:18"},"nativeSrc":"2401:14:18","nodeType":"YulFunctionCall","src":"2401:14:18"},"variableNames":[{"name":"dstPtr","nativeSrc":"2391:6:18","nodeType":"YulIdentifier","src":"2391:6:18"}]},{"nativeSrc":"2432:40:18","nodeType":"YulAssignment","src":"2432:40:18","value":{"arguments":[{"name":"srcOffset","nativeSrc":"2449:9:18","nodeType":"YulIdentifier","src":"2449:9:18"},{"name":"srcOffset_1","nativeSrc":"2460:11:18","nodeType":"YulIdentifier","src":"2460:11:18"}],"functionName":{"name":"add","nativeSrc":"2445:3:18","nodeType":"YulIdentifier","src":"2445:3:18"},"nativeSrc":"2445:27:18","nodeType":"YulFunctionCall","src":"2445:27:18"},"variableNames":[{"name":"srcOffset","nativeSrc":"2432:9:18","nodeType":"YulIdentifier","src":"2432:9:18"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2261:1:18","nodeType":"YulIdentifier","src":"2261:1:18"},{"name":"loopEnd","nativeSrc":"2264:7:18","nodeType":"YulIdentifier","src":"2264:7:18"}],"functionName":{"name":"lt","nativeSrc":"2258:2:18","nodeType":"YulIdentifier","src":"2258:2:18"},"nativeSrc":"2258:14:18","nodeType":"YulFunctionCall","src":"2258:14:18"},"nativeSrc":"2250:236:18","nodeType":"YulForLoop","post":{"nativeSrc":"2273:28:18","nodeType":"YulBlock","src":"2273:28:18","statements":[{"nativeSrc":"2275:24:18","nodeType":"YulAssignment","src":"2275:24:18","value":{"arguments":[{"name":"i","nativeSrc":"2284:1:18","nodeType":"YulIdentifier","src":"2284:1:18"},{"name":"srcOffset_1","nativeSrc":"2287:11:18","nodeType":"YulIdentifier","src":"2287:11:18"}],"functionName":{"name":"add","nativeSrc":"2280:3:18","nodeType":"YulIdentifier","src":"2280:3:18"},"nativeSrc":"2280:19:18","nodeType":"YulFunctionCall","src":"2280:19:18"},"variableNames":[{"name":"i","nativeSrc":"2275:1:18","nodeType":"YulIdentifier","src":"2275:1:18"}]}]},"pre":{"nativeSrc":"2254:3:18","nodeType":"YulBlock","src":"2254:3:18","statements":[]},"src":"2250:236:18"},{"body":{"nativeSrc":"2534:166:18","nodeType":"YulBlock","src":"2534:166:18","statements":[{"nativeSrc":"2552:43:18","nodeType":"YulVariableDeclaration","src":"2552:43:18","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2579:3:18","nodeType":"YulIdentifier","src":"2579:3:18"},{"name":"srcOffset","nativeSrc":"2584:9:18","nodeType":"YulIdentifier","src":"2584:9:18"}],"functionName":{"name":"add","nativeSrc":"2575:3:18","nodeType":"YulIdentifier","src":"2575:3:18"},"nativeSrc":"2575:19:18","nodeType":"YulFunctionCall","src":"2575:19:18"}],"functionName":{"name":"mload","nativeSrc":"2569:5:18","nodeType":"YulIdentifier","src":"2569:5:18"},"nativeSrc":"2569:26:18","nodeType":"YulFunctionCall","src":"2569:26:18"},"variables":[{"name":"lastValue","nativeSrc":"2556:9:18","nodeType":"YulTypedName","src":"2556:9:18","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"2619:6:18","nodeType":"YulIdentifier","src":"2619:6:18"},{"arguments":[{"name":"lastValue","nativeSrc":"2631:9:18","nodeType":"YulIdentifier","src":"2631:9:18"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2658:1:18","nodeType":"YulLiteral","src":"2658:1:18","type":"","value":"3"},{"name":"newLen","nativeSrc":"2661:6:18","nodeType":"YulIdentifier","src":"2661:6:18"}],"functionName":{"name":"shl","nativeSrc":"2654:3:18","nodeType":"YulIdentifier","src":"2654:3:18"},"nativeSrc":"2654:14:18","nodeType":"YulFunctionCall","src":"2654:14:18"},{"kind":"number","nativeSrc":"2670:3:18","nodeType":"YulLiteral","src":"2670:3:18","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"2650:3:18","nodeType":"YulIdentifier","src":"2650:3:18"},"nativeSrc":"2650:24:18","nodeType":"YulFunctionCall","src":"2650:24:18"},{"arguments":[{"kind":"number","nativeSrc":"2680:1:18","nodeType":"YulLiteral","src":"2680:1:18","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2676:3:18","nodeType":"YulIdentifier","src":"2676:3:18"},"nativeSrc":"2676:6:18","nodeType":"YulFunctionCall","src":"2676:6:18"}],"functionName":{"name":"shr","nativeSrc":"2646:3:18","nodeType":"YulIdentifier","src":"2646:3:18"},"nativeSrc":"2646:37:18","nodeType":"YulFunctionCall","src":"2646:37:18"}],"functionName":{"name":"not","nativeSrc":"2642:3:18","nodeType":"YulIdentifier","src":"2642:3:18"},"nativeSrc":"2642:42:18","nodeType":"YulFunctionCall","src":"2642:42:18"}],"functionName":{"name":"and","nativeSrc":"2627:3:18","nodeType":"YulIdentifier","src":"2627:3:18"},"nativeSrc":"2627:58:18","nodeType":"YulFunctionCall","src":"2627:58:18"}],"functionName":{"name":"sstore","nativeSrc":"2612:6:18","nodeType":"YulIdentifier","src":"2612:6:18"},"nativeSrc":"2612:74:18","nodeType":"YulFunctionCall","src":"2612:74:18"},"nativeSrc":"2612:74:18","nodeType":"YulExpressionStatement","src":"2612:74:18"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"2505:7:18","nodeType":"YulIdentifier","src":"2505:7:18"},{"name":"newLen","nativeSrc":"2514:6:18","nodeType":"YulIdentifier","src":"2514:6:18"}],"functionName":{"name":"lt","nativeSrc":"2502:2:18","nodeType":"YulIdentifier","src":"2502:2:18"},"nativeSrc":"2502:19:18","nodeType":"YulFunctionCall","src":"2502:19:18"},"nativeSrc":"2499:201:18","nodeType":"YulIf","src":"2499:201:18"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"2720:4:18","nodeType":"YulIdentifier","src":"2720:4:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2734:1:18","nodeType":"YulLiteral","src":"2734:1:18","type":"","value":"1"},{"name":"newLen","nativeSrc":"2737:6:18","nodeType":"YulIdentifier","src":"2737:6:18"}],"functionName":{"name":"shl","nativeSrc":"2730:3:18","nodeType":"YulIdentifier","src":"2730:3:18"},"nativeSrc":"2730:14:18","nodeType":"YulFunctionCall","src":"2730:14:18"},{"kind":"number","nativeSrc":"2746:1:18","nodeType":"YulLiteral","src":"2746:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2726:3:18","nodeType":"YulIdentifier","src":"2726:3:18"},"nativeSrc":"2726:22:18","nodeType":"YulFunctionCall","src":"2726:22:18"}],"functionName":{"name":"sstore","nativeSrc":"2713:6:18","nodeType":"YulIdentifier","src":"2713:6:18"},"nativeSrc":"2713:36:18","nodeType":"YulFunctionCall","src":"2713:36:18"},"nativeSrc":"2713:36:18","nodeType":"YulExpressionStatement","src":"2713:36:18"}]},"nativeSrc":"2096:663:18","nodeType":"YulCase","src":"2096:663:18","value":{"kind":"number","nativeSrc":"2101:1:18","nodeType":"YulLiteral","src":"2101:1:18","type":"","value":"1"}},{"body":{"nativeSrc":"2776:234:18","nodeType":"YulBlock","src":"2776:234:18","statements":[{"nativeSrc":"2790:14:18","nodeType":"YulVariableDeclaration","src":"2790:14:18","value":{"kind":"number","nativeSrc":"2803:1:18","nodeType":"YulLiteral","src":"2803:1:18","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2794:5:18","nodeType":"YulTypedName","src":"2794:5:18","type":""}]},{"body":{"nativeSrc":"2839:67:18","nodeType":"YulBlock","src":"2839:67:18","statements":[{"nativeSrc":"2857:35:18","nodeType":"YulAssignment","src":"2857:35:18","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2876:3:18","nodeType":"YulIdentifier","src":"2876:3:18"},{"name":"srcOffset","nativeSrc":"2881:9:18","nodeType":"YulIdentifier","src":"2881:9:18"}],"functionName":{"name":"add","nativeSrc":"2872:3:18","nodeType":"YulIdentifier","src":"2872:3:18"},"nativeSrc":"2872:19:18","nodeType":"YulFunctionCall","src":"2872:19:18"}],"functionName":{"name":"mload","nativeSrc":"2866:5:18","nodeType":"YulIdentifier","src":"2866:5:18"},"nativeSrc":"2866:26:18","nodeType":"YulFunctionCall","src":"2866:26:18"},"variableNames":[{"name":"value","nativeSrc":"2857:5:18","nodeType":"YulIdentifier","src":"2857:5:18"}]}]},"condition":{"name":"newLen","nativeSrc":"2820:6:18","nodeType":"YulIdentifier","src":"2820:6:18"},"nativeSrc":"2817:89:18","nodeType":"YulIf","src":"2817:89:18"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"2926:4:18","nodeType":"YulIdentifier","src":"2926:4:18"},{"arguments":[{"name":"value","nativeSrc":"2985:5:18","nodeType":"YulIdentifier","src":"2985:5:18"},{"name":"newLen","nativeSrc":"2992:6:18","nodeType":"YulIdentifier","src":"2992:6:18"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2932:52:18","nodeType":"YulIdentifier","src":"2932:52:18"},"nativeSrc":"2932:67:18","nodeType":"YulFunctionCall","src":"2932:67:18"}],"functionName":{"name":"sstore","nativeSrc":"2919:6:18","nodeType":"YulIdentifier","src":"2919:6:18"},"nativeSrc":"2919:81:18","nodeType":"YulFunctionCall","src":"2919:81:18"},"nativeSrc":"2919:81:18","nodeType":"YulExpressionStatement","src":"2919:81:18"}]},"nativeSrc":"2768:242:18","nodeType":"YulCase","src":"2768:242:18","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"2076:6:18","nodeType":"YulIdentifier","src":"2076:6:18"},{"kind":"number","nativeSrc":"2084:2:18","nodeType":"YulLiteral","src":"2084:2:18","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2073:2:18","nodeType":"YulIdentifier","src":"2073:2:18"},"nativeSrc":"2073:14:18","nodeType":"YulFunctionCall","src":"2073:14:18"},"nativeSrc":"2066:944:18","nodeType":"YulSwitch","src":"2066:944:18"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"1671:1345:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"1752:4:18","nodeType":"YulTypedName","src":"1752:4:18","type":""},{"name":"src","nativeSrc":"1758:3:18","nodeType":"YulTypedName","src":"1758:3:18","type":""}],"src":"1671:1345:18"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":18,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620014833803806200148383398101604081905262000034916200015d565b6040518060400160405280600781526020016620a4aa37b5b2b760c91b8152506040518060400160405280600381526020016210525560ea1b815250816003908162000081919062000236565b50600462000090828262000236565b50620000a291506000905082620000aa565b505062000302565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620001535760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556200010a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000157565b5060005b92915050565b6000602082840312156200017057600080fd5b81516001600160a01b03811681146200018857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001ba57607f821691505b602082108103620001db57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000231576000816000526020600020601f850160051c810160208610156200020c5750805b601f850160051c820191505b818110156200022d5782815560010162000218565b5050505b505050565b81516001600160401b038111156200025257620002526200018f565b6200026a81620002638454620001a5565b84620001e1565b602080601f831160018114620002a25760008415620002895750858301515b600019600386901b1c1916600185901b1785556200022d565b600085815260208120601f198616915b82811015620002d357888601518255948401946001909101908401620002b2565b5085821015620002f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61117180620003126000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806336568abe116100b857806395d89b411161007c57806395d89b41146102bb578063a217fddf146102c3578063a9059cbb146102cb578063d547741f146102de578063dd62ed3e146102f1578063e0e27fa71461032a57600080fd5b806336568abe1461021e57806362723644146102315780636b366cb51461025857806370a082311461027f57806391d14854146102a857600080fd5b8063248a9ca3116100ff578063248a9ca3146101b1578063272a7b79146101d45780632f2ff15d146101e7578063313ce567146101fc578063336c739c1461020b57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd1461019e575b600080fd5b61014f61014a366004610e77565b61034d565b60405190151581526020015b60405180910390f35b61016c610384565b60405161015b9190610ea8565b61014f610187366004610f13565b610416565b6002545b60405190815260200161015b565b61014f6101ac366004610f3d565b61042e565b6101906101bf366004610f79565b60009081526005602052604090206001015490565b6101906101e2366004610f92565b610452565b6101fa6101f5366004610fc5565b610467565b005b6040516012815260200161015b565b6101fa610219366004610ff1565b610492565b6101fa61022c366004610fc5565b6106ef565b6101907fa7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e481565b6101907f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc81565b61019061028d366004611085565b6001600160a01b031660009081526020819052604090205490565b61014f6102b6366004610fc5565b610727565b61016c610752565b610190600081565b61014f6102d9366004610f13565b610761565b6101fa6102ec366004610fc5565b61076f565b6101906102ff3660046110a0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61014f610338366004610f79565b60066020526000908152604090205460ff1681565b60006001600160e01b03198216637965db0b60e01b148061037e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060038054610393906110ca565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906110ca565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b5050505050905090565b600033610424818585610794565b5060019392505050565b60003361043c8582856107a1565b61044785858561081a565b506001949350505050565b600061045f848484610879565b949350505050565b600082815260056020526040902060010154610482816108f8565b61048c8383610905565b50505050565b7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc6104bc816108f8565b6001600160a01b03861661050a5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b210383937bb34b232b960811b60448201526064015b60405180910390fd5b6000851161054a5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420756e69747360981b6044820152606401610501565b60008481526006602052604090205460ff16156105a95760405162461bcd60e51b815260206004820152601860248201527f7265636569707420616c726561647920636f6e73756d656400000000000000006044820152606401610501565b60006105b6878787610879565b905060006105fc85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506109999050565b90506106287fa7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e482610727565b6106745760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964206174746573746f72207369676e61747572650000000000006044820152606401610501565b6000868152600660205260409020805460ff1916600117905561069788886109c3565b806001600160a01b0316886001600160a01b0316877f62bdd9e89a55dce0e95b0356eac19c65ef5afdd870381a93e270dcd072f13f028a6040516106dd91815260200190565b60405180910390a45050505050505050565b6001600160a01b03811633146107185760405163334bd91960e11b815260040160405180910390fd5b61072282826109fd565b505050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060048054610393906110ca565b60003361042481858561081a565b60008281526005602052604090206001015461078a816108f8565b61048c83836109fd565b6107228383836001610a6a565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981101561048c578181101561080b57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610501565b61048c84848484036000610a6a565b6001600160a01b03831661084457604051634b637e8f60e11b815260006004820152602401610501565b6001600160a01b03821661086e5760405163ec442f0560e01b815260006004820152602401610501565b610722838383610b3f565b604080514660208083019190915230828401526001600160a01b03959095166060820152608081019390935260a0808401929092528051808403909201825260c090920190915280519101207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b6109028133610c69565b50565b60006109118383610727565b6109915760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556109493390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161037e565b50600061037e565b6000806000806109a98686610ca2565b9250925092506109b98282610cef565b5090949350505050565b6001600160a01b0382166109ed5760405163ec442f0560e01b815260006004820152602401610501565b6109f960008383610b3f565b5050565b6000610a098383610727565b156109915760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161037e565b6001600160a01b038416610a945760405163e602df0560e01b815260006004820152602401610501565b6001600160a01b038316610abe57604051634a1406b160e11b815260006004820152602401610501565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3191815260200190565b60405180910390a350505050565b6001600160a01b038316610b6a578060026000828254610b5f9190611104565b90915550610bdc9050565b6001600160a01b03831660009081526020819052604090205481811015610bbd5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610501565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610bf857600280548290039055610c17565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c5c91815260200190565b60405180910390a3505050565b610c738282610727565b6109f95760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610501565b60008060008351604103610cdc5760208401516040850151606086015160001a610cce88828585610da8565b955095509550505050610ce8565b50508151600091506002905b9250925092565b6000826003811115610d0357610d03611125565b03610d0c575050565b6001826003811115610d2057610d20611125565b03610d3e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d5257610d52611125565b03610d735760405163fce698f760e01b815260048101829052602401610501565b6003826003811115610d8757610d87611125565b036109f9576040516335e2f38360e21b815260048101829052602401610501565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610de35750600091506003905082610e6d565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610e37573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e6357506000925060019150829050610e6d565b9250600091508190505b9450945094915050565b600060208284031215610e8957600080fd5b81356001600160e01b031981168114610ea157600080fd5b9392505050565b60006020808352835180602085015260005b81811015610ed657858101830151858201604001528201610eba565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610f0e57600080fd5b919050565b60008060408385031215610f2657600080fd5b610f2f83610ef7565b946020939093013593505050565b600080600060608486031215610f5257600080fd5b610f5b84610ef7565b9250610f6960208501610ef7565b9150604084013590509250925092565b600060208284031215610f8b57600080fd5b5035919050565b600080600060608486031215610fa757600080fd5b610fb084610ef7565b95602085013595506040909401359392505050565b60008060408385031215610fd857600080fd5b82359150610fe860208401610ef7565b90509250929050565b60008060008060006080868803121561100957600080fd5b61101286610ef7565b94506020860135935060408601359250606086013567ffffffffffffffff8082111561103d57600080fd5b818801915088601f83011261105157600080fd5b81358181111561106057600080fd5b89602082850101111561107257600080fd5b9699959850939650602001949392505050565b60006020828403121561109757600080fd5b610ea182610ef7565b600080604083850312156110b357600080fd5b6110bc83610ef7565b9150610fe860208401610ef7565b600181811c908216806110de57607f821691505b6020821081036110fe57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561037e57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220ccbff0a677379c90c9003ba37fbc7f7e7ecff7adecf992224d7bf2788e4cfc4b64736f6c63430008180033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1483 CODESIZE SUB DUP1 PUSH3 0x1483 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x15D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x20A4AA37B5B2B7 PUSH1 0xC9 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x105255 PUSH1 0xEA SHL DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x81 SWAP2 SWAP1 PUSH3 0x236 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x90 DUP3 DUP3 PUSH3 0x236 JUMP JUMPDEST POP PUSH3 0xA2 SWAP2 POP PUSH1 0x0 SWAP1 POP DUP3 PUSH3 0xAA JUMP JUMPDEST POP POP PUSH3 0x302 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH3 0x153 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x10A CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH3 0x157 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x1BA JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1DB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x231 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x20C JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x22D JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x218 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x252 JUMPI PUSH3 0x252 PUSH3 0x18F JUMP JUMPDEST PUSH3 0x26A DUP2 PUSH3 0x263 DUP5 SLOAD PUSH3 0x1A5 JUMP JUMPDEST DUP5 PUSH3 0x1E1 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x2A2 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x289 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x22D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2D3 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x2B2 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2F2 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1171 DUP1 PUSH3 0x312 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36568ABE GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0xE0E27FA7 EQ PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x62723644 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x6B366CB5 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x272A7B79 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x336C739C EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x19E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xE77 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH2 0x384 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0xF13 JUMP JUMPDEST PUSH2 0x416 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xF3D JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST PUSH2 0x190 PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x467 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x492 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x6EF JUMP JUMPDEST PUSH2 0x190 PUSH32 0xA7E0CD0F2772B23EE4C329892293A6BD99D48C306B094D6D008C9A8BB8B731E4 DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x28D CALLDATASIZE PUSH1 0x4 PUSH2 0x1085 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x2B6 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x752 JUMP JUMPDEST PUSH2 0x190 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0xF13 JUMP JUMPDEST PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x2EC CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x76F JUMP JUMPDEST PUSH2 0x190 PUSH2 0x2FF CALLDATASIZE PUSH1 0x4 PUSH2 0x10A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x37E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x393 SWAP1 PUSH2 0x10CA JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3BF SWAP1 PUSH2 0x10CA JUMP JUMPDEST DUP1 ISZERO PUSH2 0x40C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x40C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x424 DUP2 DUP6 DUP6 PUSH2 0x794 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x43C DUP6 DUP3 DUP6 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x447 DUP6 DUP6 DUP6 PUSH2 0x81A JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45F DUP5 DUP5 DUP5 PUSH2 0x879 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x482 DUP2 PUSH2 0x8F8 JUMP JUMPDEST PUSH2 0x48C DUP4 DUP4 PUSH2 0x905 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC PUSH2 0x4BC DUP2 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x50A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B210383937BB34B232B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x54A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x696E76616C696420756E697473 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569707420616C726561647920636F6E73756D65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B6 DUP8 DUP8 DUP8 PUSH2 0x879 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5FC DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH2 0x999 SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x628 PUSH32 0xA7E0CD0F2772B23EE4C329892293A6BD99D48C306B094D6D008C9A8BB8B731E4 DUP3 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x674 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C6964206174746573746F72207369676E6174757265000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x697 DUP9 DUP9 PUSH2 0x9C3 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH32 0x62BDD9E89A55DCE0E95B0356EAC19C65EF5AFDD870381A93E270DCD072F13F02 DUP11 PUSH1 0x40 MLOAD PUSH2 0x6DD SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x718 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x722 DUP3 DUP3 PUSH2 0x9FD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x393 SWAP1 PUSH2 0x10CA JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x424 DUP2 DUP6 DUP6 PUSH2 0x81A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x78A DUP2 PUSH2 0x8F8 JUMP JUMPDEST PUSH2 0x48C DUP4 DUP4 PUSH2 0x9FD JUMP JUMPDEST PUSH2 0x722 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xA6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x48C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x80B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH2 0x48C DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0xA6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x844 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH2 0x722 DUP4 DUP4 DUP4 PUSH2 0xB3F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CHAINID PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP3 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP5 SUB SWAP1 SWAP3 ADD DUP3 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3C SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x902 DUP2 CALLER PUSH2 0xC69 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x911 DUP4 DUP4 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x991 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x949 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x9A9 DUP7 DUP7 PUSH2 0xCA2 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x9B9 DUP3 DUP3 PUSH2 0xCEF JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9ED JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH2 0x9F9 PUSH1 0x0 DUP4 DUP4 PUSH2 0xB3F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP4 DUP4 PUSH2 0x727 JUMP JUMPDEST ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xABE JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x48C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB31 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB6A JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB5F SWAP2 SWAP1 PUSH2 0x1104 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0xBDC SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xBBD JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBF8 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC5C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xC73 DUP3 DUP3 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0xCDC JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0xCCE DUP9 DUP3 DUP6 DUP6 PUSH2 0xDA8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0xCE8 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD03 JUMPI PUSH2 0xD03 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0xD0C JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD20 JUMPI PUSH2 0xD20 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0xD3E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD52 JUMPI PUSH2 0xD52 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0xD73 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD87 JUMPI PUSH2 0xD87 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0xDE3 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0xE6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE37 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE63 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0xE6D JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xED6 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xEBA JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2F DUP4 PUSH2 0xEF7 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF5B DUP5 PUSH2 0xEF7 JUMP JUMPDEST SWAP3 POP PUSH2 0xF69 PUSH1 0x20 DUP6 ADD PUSH2 0xEF7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFB0 DUP5 PUSH2 0xEF7 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xFE8 PUSH1 0x20 DUP5 ADD PUSH2 0xEF7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1012 DUP7 PUSH2 0xEF7 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1060 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEA1 DUP3 PUSH2 0xEF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10BC DUP4 PUSH2 0xEF7 JUMP JUMPDEST SWAP2 POP PUSH2 0xFE8 PUSH1 0x20 DUP5 ADD PUSH2 0xEF7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10DE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x10FE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x37E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0xBF CREATE 0xA6 PUSH24 0x379C90C9003BA37FBC7F7E7ECFF7ADECF992224D7BF2788E 0x4C 0xFC 0x4B PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"491:2252:16:-:0;;;1003:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1582:113:3;;;;;;;;;;;;;-1:-1:-1;;;1582:113:3;;;;;;;;;;;;;;;;-1:-1:-1;;;1582:113:3;;;1656:5;1648;:13;;;;;;:::i;:::-;-1:-1:-1;1671:7:3;:17;1681:7;1671;:17;:::i;:::-;-1:-1:-1;1064:37:16::1;::::0;-1:-1:-1;2241:4:0::1;::::0;-1:-1:-1;1095:5:16;1064:10:::1;:37::i;:::-;;1003:105:::0;491:2252;;6155:316:0;6232:4;2930:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2930:29:0;;;;;;;;;;;;6248:217;;6291:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6291:29:0;;;;;;;;;:36;;-1:-1:-1;;6291:36:0;6323:4;6291:36;;;6373:12;735:10:6;;656:96;6373:12:0;-1:-1:-1;;;;;6346:40:0;6364:7;-1:-1:-1;;;;;6346:40:0;6358:4;6346:40;;;;;;;;;;-1:-1:-1;6407:4:0;6400:11;;6248:217;-1:-1:-1;6449:5:0;6248:217;6155:316;;;;:::o;14:290:18:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:18;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:18:o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:380;520:1;516:12;;;;563;;;584:61;;638:4;630:6;626:17;616:27;;584:61;691:2;683:6;680:14;660:18;657:38;654:161;;737:10;732:3;728:20;725:1;718:31;772:4;769:1;762:15;800:4;797:1;790:15;654:161;;441:380;;;:::o;952:543::-;1054:2;1049:3;1046:11;1043:446;;;1090:1;1114:5;1111:1;1104:16;1158:4;1155:1;1145:18;1228:2;1216:10;1212:19;1209:1;1205:27;1199:4;1195:38;1264:4;1252:10;1249:20;1246:47;;;-1:-1:-1;1287:4:18;1246:47;1342:2;1337:3;1333:12;1330:1;1326:20;1320:4;1316:31;1306:41;;1397:82;1415:2;1408:5;1405:13;1397:82;;;1460:17;;;1441:1;1430:13;1397:82;;;1401:3;;;1043:446;952:543;;;:::o;1671:1345::-;1791:10;;-1:-1:-1;;;;;1813:30:18;;1810:56;;;1846:18;;:::i;:::-;1875:97;1965:6;1925:38;1957:4;1951:11;1925:38;:::i;:::-;1919:4;1875:97;:::i;:::-;2027:4;;2084:2;2073:14;;2101:1;2096:663;;;;2803:1;2820:6;2817:89;;;-1:-1:-1;2872:19:18;;;2866:26;2817:89;-1:-1:-1;;1628:1:18;1624:11;;;1620:24;1616:29;1606:40;1652:1;1648:11;;;1603:57;2919:81;;2066:944;;2096:663;899:1;892:14;;;936:4;923:18;;-1:-1:-1;;2132:20:18;;;2250:236;2264:7;2261:1;2258:14;2250:236;;;2353:19;;;2347:26;2332:42;;2445:27;;;;2413:1;2401:14;;;;2280:19;;2250:236;;;2254:3;2514:6;2505:7;2502:19;2499:201;;;2575:19;;;2569:26;-1:-1:-1;;2658:1:18;2654:14;;;2670:3;2650:24;2646:37;2642:42;2627:58;2612:74;;2499:201;-1:-1:-1;;;;;2746:1:18;2730:14;;;2726:22;2713:36;;-1:-1:-1;1671:1345:18:o;:::-;491:2252:16;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ATTESTOR_ROLE_6650":{"entryPoint":null,"id":6650,"parameterSlots":0,"returnSlots":0},"@COORDINATOR_ROLE_6645":{"entryPoint":null,"id":6645,"parameterSlots":0,"returnSlots":0},"@DEFAULT_ADMIN_ROLE_30":{"entryPoint":null,"id":30,"parameterSlots":0,"returnSlots":0},"@_approve_922":{"entryPoint":1940,"id":922,"parameterSlots":3,"returnSlots":0},"@_approve_982":{"entryPoint":2666,"id":982,"parameterSlots":4,"returnSlots":0},"@_checkRole_115":{"entryPoint":3177,"id":115,"parameterSlots":2,"returnSlots":0},"@_checkRole_94":{"entryPoint":2296,"id":94,"parameterSlots":1,"returnSlots":0},"@_grantRole_257":{"entryPoint":2309,"id":257,"parameterSlots":2,"returnSlots":1},"@_mintDigest_6814":{"entryPoint":2169,"id":6814,"parameterSlots":3,"returnSlots":1},"@_mint_871":{"entryPoint":2499,"id":871,"parameterSlots":2,"returnSlots":0},"@_msgSender_1147":{"entryPoint":null,"id":1147,"parameterSlots":0,"returnSlots":1},"@_revokeRole_295":{"entryPoint":2557,"id":295,"parameterSlots":2,"returnSlots":1},"@_spendAllowance_1030":{"entryPoint":1953,"id":1030,"parameterSlots":3,"returnSlots":0},"@_throwError_2966":{"entryPoint":3311,"id":2966,"parameterSlots":2,"returnSlots":0},"@_transfer_761":{"entryPoint":2074,"id":761,"parameterSlots":3,"returnSlots":0},"@_update_838":{"entryPoint":2879,"id":838,"parameterSlots":3,"returnSlots":0},"@allowance_658":{"entryPoint":null,"id":658,"parameterSlots":2,"returnSlots":1},"@approve_682":{"entryPoint":1046,"id":682,"parameterSlots":2,"returnSlots":1},"@balanceOf_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":1},"@consumedReceipts_6655":{"entryPoint":null,"id":6655,"parameterSlots":0,"returnSlots":0},"@decimals_595":{"entryPoint":null,"id":595,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_129":{"entryPoint":null,"id":129,"parameterSlots":1,"returnSlots":1},"@grantRole_148":{"entryPoint":1127,"id":148,"parameterSlots":2,"returnSlots":0},"@hasRole_81":{"entryPoint":1831,"id":81,"parameterSlots":2,"returnSlots":1},"@mintDigest_6781":{"entryPoint":1106,"id":6781,"parameterSlots":3,"returnSlots":1},"@mintWithReceipt_6762":{"entryPoint":1170,"id":6762,"parameterSlots":5,"returnSlots":0},"@name_577":{"entryPoint":900,"id":577,"parameterSlots":0,"returnSlots":1},"@recover_2723":{"entryPoint":2457,"id":2723,"parameterSlots":2,"returnSlots":1},"@renounceRole_190":{"entryPoint":1775,"id":190,"parameterSlots":2,"returnSlots":0},"@revokeRole_167":{"entryPoint":1903,"id":167,"parameterSlots":2,"returnSlots":0},"@supportsInterface_3076":{"entryPoint":null,"id":3076,"parameterSlots":1,"returnSlots":1},"@supportsInterface_63":{"entryPoint":845,"id":63,"parameterSlots":1,"returnSlots":1},"@symbol_586":{"entryPoint":1874,"id":586,"parameterSlots":0,"returnSlots":1},"@toEthSignedMessageHash_2982":{"entryPoint":null,"id":2982,"parameterSlots":1,"returnSlots":1},"@totalSupply_604":{"entryPoint":null,"id":604,"parameterSlots":0,"returnSlots":1},"@transferFrom_714":{"entryPoint":1070,"id":714,"parameterSlots":3,"returnSlots":1},"@transfer_641":{"entryPoint":1889,"id":641,"parameterSlots":2,"returnSlots":1},"@tryRecover_2693":{"entryPoint":3234,"id":2693,"parameterSlots":2,"returnSlots":3},"@tryRecover_2881":{"entryPoint":3496,"id":2881,"parameterSlots":4,"returnSlots":3},"abi_decode_address":{"entryPoint":3831,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4229,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4256,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3901,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3859,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256t_bytes32":{"entryPoint":3986,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes_calldata_ptr":{"entryPoint":4081,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_bytes32":{"entryPoint":3961,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":4037,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3703,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3752,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_71f86cf417ff59fbe7c0fe4d47bc3a27555955742eedee4393c55e5ebd9347cc__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_aa5e8e776638b05fbc051ae185efa3102982bf1d06944b75bb2872751226b5c4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c347248987f70db0011250d554ae2fccfb8a4b603bfebf1c3d0af4f63efc2c60__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_address_t_uint256_t_bytes32__to_t_uint256_t_address_t_address_t_uint256_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4356,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":4298,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x21":{"entryPoint":4389,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:8307:18","nodeType":"YulBlock","src":"0:8307:18","statements":[{"nativeSrc":"6:3:18","nodeType":"YulBlock","src":"6:3:18","statements":[]},{"body":{"nativeSrc":"83:217:18","nodeType":"YulBlock","src":"83:217:18","statements":[{"body":{"nativeSrc":"129:16:18","nodeType":"YulBlock","src":"129:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"138:1:18","nodeType":"YulLiteral","src":"138:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"141:1:18","nodeType":"YulLiteral","src":"141:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"131:6:18","nodeType":"YulIdentifier","src":"131:6:18"},"nativeSrc":"131:12:18","nodeType":"YulFunctionCall","src":"131:12:18"},"nativeSrc":"131:12:18","nodeType":"YulExpressionStatement","src":"131:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"104:7:18","nodeType":"YulIdentifier","src":"104:7:18"},{"name":"headStart","nativeSrc":"113:9:18","nodeType":"YulIdentifier","src":"113:9:18"}],"functionName":{"name":"sub","nativeSrc":"100:3:18","nodeType":"YulIdentifier","src":"100:3:18"},"nativeSrc":"100:23:18","nodeType":"YulFunctionCall","src":"100:23:18"},{"kind":"number","nativeSrc":"125:2:18","nodeType":"YulLiteral","src":"125:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"96:3:18","nodeType":"YulIdentifier","src":"96:3:18"},"nativeSrc":"96:32:18","nodeType":"YulFunctionCall","src":"96:32:18"},"nativeSrc":"93:52:18","nodeType":"YulIf","src":"93:52:18"},{"nativeSrc":"154:36:18","nodeType":"YulVariableDeclaration","src":"154:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"180:9:18","nodeType":"YulIdentifier","src":"180:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"167:12:18","nodeType":"YulIdentifier","src":"167:12:18"},"nativeSrc":"167:23:18","nodeType":"YulFunctionCall","src":"167:23:18"},"variables":[{"name":"value","nativeSrc":"158:5:18","nodeType":"YulTypedName","src":"158:5:18","type":""}]},{"body":{"nativeSrc":"254:16:18","nodeType":"YulBlock","src":"254:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"263:1:18","nodeType":"YulLiteral","src":"263:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"266:1:18","nodeType":"YulLiteral","src":"266:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"256:6:18","nodeType":"YulIdentifier","src":"256:6:18"},"nativeSrc":"256:12:18","nodeType":"YulFunctionCall","src":"256:12:18"},"nativeSrc":"256:12:18","nodeType":"YulExpressionStatement","src":"256:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"212:5:18","nodeType":"YulIdentifier","src":"212:5:18"},{"arguments":[{"name":"value","nativeSrc":"223:5:18","nodeType":"YulIdentifier","src":"223:5:18"},{"arguments":[{"kind":"number","nativeSrc":"234:3:18","nodeType":"YulLiteral","src":"234:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"239:10:18","nodeType":"YulLiteral","src":"239:10:18","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"230:3:18","nodeType":"YulIdentifier","src":"230:3:18"},"nativeSrc":"230:20:18","nodeType":"YulFunctionCall","src":"230:20:18"}],"functionName":{"name":"and","nativeSrc":"219:3:18","nodeType":"YulIdentifier","src":"219:3:18"},"nativeSrc":"219:32:18","nodeType":"YulFunctionCall","src":"219:32:18"}],"functionName":{"name":"eq","nativeSrc":"209:2:18","nodeType":"YulIdentifier","src":"209:2:18"},"nativeSrc":"209:43:18","nodeType":"YulFunctionCall","src":"209:43:18"}],"functionName":{"name":"iszero","nativeSrc":"202:6:18","nodeType":"YulIdentifier","src":"202:6:18"},"nativeSrc":"202:51:18","nodeType":"YulFunctionCall","src":"202:51:18"},"nativeSrc":"199:71:18","nodeType":"YulIf","src":"199:71:18"},{"nativeSrc":"279:15:18","nodeType":"YulAssignment","src":"279:15:18","value":{"name":"value","nativeSrc":"289:5:18","nodeType":"YulIdentifier","src":"289:5:18"},"variableNames":[{"name":"value0","nativeSrc":"279:6:18","nodeType":"YulIdentifier","src":"279:6:18"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"14:286:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"49:9:18","nodeType":"YulTypedName","src":"49:9:18","type":""},{"name":"dataEnd","nativeSrc":"60:7:18","nodeType":"YulTypedName","src":"60:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"72:6:18","nodeType":"YulTypedName","src":"72:6:18","type":""}],"src":"14:286:18"},{"body":{"nativeSrc":"400:92:18","nodeType":"YulBlock","src":"400:92:18","statements":[{"nativeSrc":"410:26:18","nodeType":"YulAssignment","src":"410:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"422:9:18","nodeType":"YulIdentifier","src":"422:9:18"},{"kind":"number","nativeSrc":"433:2:18","nodeType":"YulLiteral","src":"433:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"418:3:18","nodeType":"YulIdentifier","src":"418:3:18"},"nativeSrc":"418:18:18","nodeType":"YulFunctionCall","src":"418:18:18"},"variableNames":[{"name":"tail","nativeSrc":"410:4:18","nodeType":"YulIdentifier","src":"410:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"452:9:18","nodeType":"YulIdentifier","src":"452:9:18"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"477:6:18","nodeType":"YulIdentifier","src":"477:6:18"}],"functionName":{"name":"iszero","nativeSrc":"470:6:18","nodeType":"YulIdentifier","src":"470:6:18"},"nativeSrc":"470:14:18","nodeType":"YulFunctionCall","src":"470:14:18"}],"functionName":{"name":"iszero","nativeSrc":"463:6:18","nodeType":"YulIdentifier","src":"463:6:18"},"nativeSrc":"463:22:18","nodeType":"YulFunctionCall","src":"463:22:18"}],"functionName":{"name":"mstore","nativeSrc":"445:6:18","nodeType":"YulIdentifier","src":"445:6:18"},"nativeSrc":"445:41:18","nodeType":"YulFunctionCall","src":"445:41:18"},"nativeSrc":"445:41:18","nodeType":"YulExpressionStatement","src":"445:41:18"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"305:187:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"369:9:18","nodeType":"YulTypedName","src":"369:9:18","type":""},{"name":"value0","nativeSrc":"380:6:18","nodeType":"YulTypedName","src":"380:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"391:4:18","nodeType":"YulTypedName","src":"391:4:18","type":""}],"src":"305:187:18"},{"body":{"nativeSrc":"618:427:18","nodeType":"YulBlock","src":"618:427:18","statements":[{"nativeSrc":"628:12:18","nodeType":"YulVariableDeclaration","src":"628:12:18","value":{"kind":"number","nativeSrc":"638:2:18","nodeType":"YulLiteral","src":"638:2:18","type":"","value":"32"},"variables":[{"name":"_1","nativeSrc":"632:2:18","nodeType":"YulTypedName","src":"632:2:18","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"656:9:18","nodeType":"YulIdentifier","src":"656:9:18"},{"kind":"number","nativeSrc":"667:2:18","nodeType":"YulLiteral","src":"667:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"649:6:18","nodeType":"YulIdentifier","src":"649:6:18"},"nativeSrc":"649:21:18","nodeType":"YulFunctionCall","src":"649:21:18"},"nativeSrc":"649:21:18","nodeType":"YulExpressionStatement","src":"649:21:18"},{"nativeSrc":"679:27:18","nodeType":"YulVariableDeclaration","src":"679:27:18","value":{"arguments":[{"name":"value0","nativeSrc":"699:6:18","nodeType":"YulIdentifier","src":"699:6:18"}],"functionName":{"name":"mload","nativeSrc":"693:5:18","nodeType":"YulIdentifier","src":"693:5:18"},"nativeSrc":"693:13:18","nodeType":"YulFunctionCall","src":"693:13:18"},"variables":[{"name":"length","nativeSrc":"683:6:18","nodeType":"YulTypedName","src":"683:6:18","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"726:9:18","nodeType":"YulIdentifier","src":"726:9:18"},{"kind":"number","nativeSrc":"737:2:18","nodeType":"YulLiteral","src":"737:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"722:3:18","nodeType":"YulIdentifier","src":"722:3:18"},"nativeSrc":"722:18:18","nodeType":"YulFunctionCall","src":"722:18:18"},{"name":"length","nativeSrc":"742:6:18","nodeType":"YulIdentifier","src":"742:6:18"}],"functionName":{"name":"mstore","nativeSrc":"715:6:18","nodeType":"YulIdentifier","src":"715:6:18"},"nativeSrc":"715:34:18","nodeType":"YulFunctionCall","src":"715:34:18"},"nativeSrc":"715:34:18","nodeType":"YulExpressionStatement","src":"715:34:18"},{"nativeSrc":"758:10:18","nodeType":"YulVariableDeclaration","src":"758:10:18","value":{"kind":"number","nativeSrc":"767:1:18","nodeType":"YulLiteral","src":"767:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"762:1:18","nodeType":"YulTypedName","src":"762:1:18","type":""}]},{"body":{"nativeSrc":"827:90:18","nodeType":"YulBlock","src":"827:90:18","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"856:9:18","nodeType":"YulIdentifier","src":"856:9:18"},{"name":"i","nativeSrc":"867:1:18","nodeType":"YulIdentifier","src":"867:1:18"}],"functionName":{"name":"add","nativeSrc":"852:3:18","nodeType":"YulIdentifier","src":"852:3:18"},"nativeSrc":"852:17:18","nodeType":"YulFunctionCall","src":"852:17:18"},{"kind":"number","nativeSrc":"871:2:18","nodeType":"YulLiteral","src":"871:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"848:3:18","nodeType":"YulIdentifier","src":"848:3:18"},"nativeSrc":"848:26:18","nodeType":"YulFunctionCall","src":"848:26:18"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"890:6:18","nodeType":"YulIdentifier","src":"890:6:18"},{"name":"i","nativeSrc":"898:1:18","nodeType":"YulIdentifier","src":"898:1:18"}],"functionName":{"name":"add","nativeSrc":"886:3:18","nodeType":"YulIdentifier","src":"886:3:18"},"nativeSrc":"886:14:18","nodeType":"YulFunctionCall","src":"886:14:18"},{"name":"_1","nativeSrc":"902:2:18","nodeType":"YulIdentifier","src":"902:2:18"}],"functionName":{"name":"add","nativeSrc":"882:3:18","nodeType":"YulIdentifier","src":"882:3:18"},"nativeSrc":"882:23:18","nodeType":"YulFunctionCall","src":"882:23:18"}],"functionName":{"name":"mload","nativeSrc":"876:5:18","nodeType":"YulIdentifier","src":"876:5:18"},"nativeSrc":"876:30:18","nodeType":"YulFunctionCall","src":"876:30:18"}],"functionName":{"name":"mstore","nativeSrc":"841:6:18","nodeType":"YulIdentifier","src":"841:6:18"},"nativeSrc":"841:66:18","nodeType":"YulFunctionCall","src":"841:66:18"},"nativeSrc":"841:66:18","nodeType":"YulExpressionStatement","src":"841:66:18"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"788:1:18","nodeType":"YulIdentifier","src":"788:1:18"},{"name":"length","nativeSrc":"791:6:18","nodeType":"YulIdentifier","src":"791:6:18"}],"functionName":{"name":"lt","nativeSrc":"785:2:18","nodeType":"YulIdentifier","src":"785:2:18"},"nativeSrc":"785:13:18","nodeType":"YulFunctionCall","src":"785:13:18"},"nativeSrc":"777:140:18","nodeType":"YulForLoop","post":{"nativeSrc":"799:19:18","nodeType":"YulBlock","src":"799:19:18","statements":[{"nativeSrc":"801:15:18","nodeType":"YulAssignment","src":"801:15:18","value":{"arguments":[{"name":"i","nativeSrc":"810:1:18","nodeType":"YulIdentifier","src":"810:1:18"},{"name":"_1","nativeSrc":"813:2:18","nodeType":"YulIdentifier","src":"813:2:18"}],"functionName":{"name":"add","nativeSrc":"806:3:18","nodeType":"YulIdentifier","src":"806:3:18"},"nativeSrc":"806:10:18","nodeType":"YulFunctionCall","src":"806:10:18"},"variableNames":[{"name":"i","nativeSrc":"801:1:18","nodeType":"YulIdentifier","src":"801:1:18"}]}]},"pre":{"nativeSrc":"781:3:18","nodeType":"YulBlock","src":"781:3:18","statements":[]},"src":"777:140:18"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"941:9:18","nodeType":"YulIdentifier","src":"941:9:18"},{"name":"length","nativeSrc":"952:6:18","nodeType":"YulIdentifier","src":"952:6:18"}],"functionName":{"name":"add","nativeSrc":"937:3:18","nodeType":"YulIdentifier","src":"937:3:18"},"nativeSrc":"937:22:18","nodeType":"YulFunctionCall","src":"937:22:18"},{"kind":"number","nativeSrc":"961:2:18","nodeType":"YulLiteral","src":"961:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"933:3:18","nodeType":"YulIdentifier","src":"933:3:18"},"nativeSrc":"933:31:18","nodeType":"YulFunctionCall","src":"933:31:18"},{"kind":"number","nativeSrc":"966:1:18","nodeType":"YulLiteral","src":"966:1:18","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"926:6:18","nodeType":"YulIdentifier","src":"926:6:18"},"nativeSrc":"926:42:18","nodeType":"YulFunctionCall","src":"926:42:18"},"nativeSrc":"926:42:18","nodeType":"YulExpressionStatement","src":"926:42:18"},{"nativeSrc":"977:62:18","nodeType":"YulAssignment","src":"977:62:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"993:9:18","nodeType":"YulIdentifier","src":"993:9:18"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1012:6:18","nodeType":"YulIdentifier","src":"1012:6:18"},{"kind":"number","nativeSrc":"1020:2:18","nodeType":"YulLiteral","src":"1020:2:18","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1008:3:18","nodeType":"YulIdentifier","src":"1008:3:18"},"nativeSrc":"1008:15:18","nodeType":"YulFunctionCall","src":"1008:15:18"},{"arguments":[{"kind":"number","nativeSrc":"1029:2:18","nodeType":"YulLiteral","src":"1029:2:18","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1025:3:18","nodeType":"YulIdentifier","src":"1025:3:18"},"nativeSrc":"1025:7:18","nodeType":"YulFunctionCall","src":"1025:7:18"}],"functionName":{"name":"and","nativeSrc":"1004:3:18","nodeType":"YulIdentifier","src":"1004:3:18"},"nativeSrc":"1004:29:18","nodeType":"YulFunctionCall","src":"1004:29:18"}],"functionName":{"name":"add","nativeSrc":"989:3:18","nodeType":"YulIdentifier","src":"989:3:18"},"nativeSrc":"989:45:18","nodeType":"YulFunctionCall","src":"989:45:18"},{"kind":"number","nativeSrc":"1036:2:18","nodeType":"YulLiteral","src":"1036:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"985:3:18","nodeType":"YulIdentifier","src":"985:3:18"},"nativeSrc":"985:54:18","nodeType":"YulFunctionCall","src":"985:54:18"},"variableNames":[{"name":"tail","nativeSrc":"977:4:18","nodeType":"YulIdentifier","src":"977:4:18"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"497:548:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"587:9:18","nodeType":"YulTypedName","src":"587:9:18","type":""},{"name":"value0","nativeSrc":"598:6:18","nodeType":"YulTypedName","src":"598:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"609:4:18","nodeType":"YulTypedName","src":"609:4:18","type":""}],"src":"497:548:18"},{"body":{"nativeSrc":"1099:124:18","nodeType":"YulBlock","src":"1099:124:18","statements":[{"nativeSrc":"1109:29:18","nodeType":"YulAssignment","src":"1109:29:18","value":{"arguments":[{"name":"offset","nativeSrc":"1131:6:18","nodeType":"YulIdentifier","src":"1131:6:18"}],"functionName":{"name":"calldataload","nativeSrc":"1118:12:18","nodeType":"YulIdentifier","src":"1118:12:18"},"nativeSrc":"1118:20:18","nodeType":"YulFunctionCall","src":"1118:20:18"},"variableNames":[{"name":"value","nativeSrc":"1109:5:18","nodeType":"YulIdentifier","src":"1109:5:18"}]},{"body":{"nativeSrc":"1201:16:18","nodeType":"YulBlock","src":"1201:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1210:1:18","nodeType":"YulLiteral","src":"1210:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1213:1:18","nodeType":"YulLiteral","src":"1213:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1203:6:18","nodeType":"YulIdentifier","src":"1203:6:18"},"nativeSrc":"1203:12:18","nodeType":"YulFunctionCall","src":"1203:12:18"},"nativeSrc":"1203:12:18","nodeType":"YulExpressionStatement","src":"1203:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1160:5:18","nodeType":"YulIdentifier","src":"1160:5:18"},{"arguments":[{"name":"value","nativeSrc":"1171:5:18","nodeType":"YulIdentifier","src":"1171:5:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1186:3:18","nodeType":"YulLiteral","src":"1186:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"1191:1:18","nodeType":"YulLiteral","src":"1191:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1182:3:18","nodeType":"YulIdentifier","src":"1182:3:18"},"nativeSrc":"1182:11:18","nodeType":"YulFunctionCall","src":"1182:11:18"},{"kind":"number","nativeSrc":"1195:1:18","nodeType":"YulLiteral","src":"1195:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1178:3:18","nodeType":"YulIdentifier","src":"1178:3:18"},"nativeSrc":"1178:19:18","nodeType":"YulFunctionCall","src":"1178:19:18"}],"functionName":{"name":"and","nativeSrc":"1167:3:18","nodeType":"YulIdentifier","src":"1167:3:18"},"nativeSrc":"1167:31:18","nodeType":"YulFunctionCall","src":"1167:31:18"}],"functionName":{"name":"eq","nativeSrc":"1157:2:18","nodeType":"YulIdentifier","src":"1157:2:18"},"nativeSrc":"1157:42:18","nodeType":"YulFunctionCall","src":"1157:42:18"}],"functionName":{"name":"iszero","nativeSrc":"1150:6:18","nodeType":"YulIdentifier","src":"1150:6:18"},"nativeSrc":"1150:50:18","nodeType":"YulFunctionCall","src":"1150:50:18"},"nativeSrc":"1147:70:18","nodeType":"YulIf","src":"1147:70:18"}]},"name":"abi_decode_address","nativeSrc":"1050:173:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1078:6:18","nodeType":"YulTypedName","src":"1078:6:18","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1089:5:18","nodeType":"YulTypedName","src":"1089:5:18","type":""}],"src":"1050:173:18"},{"body":{"nativeSrc":"1315:167:18","nodeType":"YulBlock","src":"1315:167:18","statements":[{"body":{"nativeSrc":"1361:16:18","nodeType":"YulBlock","src":"1361:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1370:1:18","nodeType":"YulLiteral","src":"1370:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1373:1:18","nodeType":"YulLiteral","src":"1373:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1363:6:18","nodeType":"YulIdentifier","src":"1363:6:18"},"nativeSrc":"1363:12:18","nodeType":"YulFunctionCall","src":"1363:12:18"},"nativeSrc":"1363:12:18","nodeType":"YulExpressionStatement","src":"1363:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1336:7:18","nodeType":"YulIdentifier","src":"1336:7:18"},{"name":"headStart","nativeSrc":"1345:9:18","nodeType":"YulIdentifier","src":"1345:9:18"}],"functionName":{"name":"sub","nativeSrc":"1332:3:18","nodeType":"YulIdentifier","src":"1332:3:18"},"nativeSrc":"1332:23:18","nodeType":"YulFunctionCall","src":"1332:23:18"},{"kind":"number","nativeSrc":"1357:2:18","nodeType":"YulLiteral","src":"1357:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1328:3:18","nodeType":"YulIdentifier","src":"1328:3:18"},"nativeSrc":"1328:32:18","nodeType":"YulFunctionCall","src":"1328:32:18"},"nativeSrc":"1325:52:18","nodeType":"YulIf","src":"1325:52:18"},{"nativeSrc":"1386:39:18","nodeType":"YulAssignment","src":"1386:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1415:9:18","nodeType":"YulIdentifier","src":"1415:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1396:18:18","nodeType":"YulIdentifier","src":"1396:18:18"},"nativeSrc":"1396:29:18","nodeType":"YulFunctionCall","src":"1396:29:18"},"variableNames":[{"name":"value0","nativeSrc":"1386:6:18","nodeType":"YulIdentifier","src":"1386:6:18"}]},{"nativeSrc":"1434:42:18","nodeType":"YulAssignment","src":"1434:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1461:9:18","nodeType":"YulIdentifier","src":"1461:9:18"},{"kind":"number","nativeSrc":"1472:2:18","nodeType":"YulLiteral","src":"1472:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1457:3:18","nodeType":"YulIdentifier","src":"1457:3:18"},"nativeSrc":"1457:18:18","nodeType":"YulFunctionCall","src":"1457:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"1444:12:18","nodeType":"YulIdentifier","src":"1444:12:18"},"nativeSrc":"1444:32:18","nodeType":"YulFunctionCall","src":"1444:32:18"},"variableNames":[{"name":"value1","nativeSrc":"1434:6:18","nodeType":"YulIdentifier","src":"1434:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1228:254:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1273:9:18","nodeType":"YulTypedName","src":"1273:9:18","type":""},{"name":"dataEnd","nativeSrc":"1284:7:18","nodeType":"YulTypedName","src":"1284:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1296:6:18","nodeType":"YulTypedName","src":"1296:6:18","type":""},{"name":"value1","nativeSrc":"1304:6:18","nodeType":"YulTypedName","src":"1304:6:18","type":""}],"src":"1228:254:18"},{"body":{"nativeSrc":"1588:76:18","nodeType":"YulBlock","src":"1588:76:18","statements":[{"nativeSrc":"1598:26:18","nodeType":"YulAssignment","src":"1598:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1610:9:18","nodeType":"YulIdentifier","src":"1610:9:18"},{"kind":"number","nativeSrc":"1621:2:18","nodeType":"YulLiteral","src":"1621:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1606:3:18","nodeType":"YulIdentifier","src":"1606:3:18"},"nativeSrc":"1606:18:18","nodeType":"YulFunctionCall","src":"1606:18:18"},"variableNames":[{"name":"tail","nativeSrc":"1598:4:18","nodeType":"YulIdentifier","src":"1598:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1640:9:18","nodeType":"YulIdentifier","src":"1640:9:18"},{"name":"value0","nativeSrc":"1651:6:18","nodeType":"YulIdentifier","src":"1651:6:18"}],"functionName":{"name":"mstore","nativeSrc":"1633:6:18","nodeType":"YulIdentifier","src":"1633:6:18"},"nativeSrc":"1633:25:18","nodeType":"YulFunctionCall","src":"1633:25:18"},"nativeSrc":"1633:25:18","nodeType":"YulExpressionStatement","src":"1633:25:18"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"1487:177:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1557:9:18","nodeType":"YulTypedName","src":"1557:9:18","type":""},{"name":"value0","nativeSrc":"1568:6:18","nodeType":"YulTypedName","src":"1568:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1579:4:18","nodeType":"YulTypedName","src":"1579:4:18","type":""}],"src":"1487:177:18"},{"body":{"nativeSrc":"1773:224:18","nodeType":"YulBlock","src":"1773:224:18","statements":[{"body":{"nativeSrc":"1819:16:18","nodeType":"YulBlock","src":"1819:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1828:1:18","nodeType":"YulLiteral","src":"1828:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1831:1:18","nodeType":"YulLiteral","src":"1831:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1821:6:18","nodeType":"YulIdentifier","src":"1821:6:18"},"nativeSrc":"1821:12:18","nodeType":"YulFunctionCall","src":"1821:12:18"},"nativeSrc":"1821:12:18","nodeType":"YulExpressionStatement","src":"1821:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1794:7:18","nodeType":"YulIdentifier","src":"1794:7:18"},{"name":"headStart","nativeSrc":"1803:9:18","nodeType":"YulIdentifier","src":"1803:9:18"}],"functionName":{"name":"sub","nativeSrc":"1790:3:18","nodeType":"YulIdentifier","src":"1790:3:18"},"nativeSrc":"1790:23:18","nodeType":"YulFunctionCall","src":"1790:23:18"},{"kind":"number","nativeSrc":"1815:2:18","nodeType":"YulLiteral","src":"1815:2:18","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1786:3:18","nodeType":"YulIdentifier","src":"1786:3:18"},"nativeSrc":"1786:32:18","nodeType":"YulFunctionCall","src":"1786:32:18"},"nativeSrc":"1783:52:18","nodeType":"YulIf","src":"1783:52:18"},{"nativeSrc":"1844:39:18","nodeType":"YulAssignment","src":"1844:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1873:9:18","nodeType":"YulIdentifier","src":"1873:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1854:18:18","nodeType":"YulIdentifier","src":"1854:18:18"},"nativeSrc":"1854:29:18","nodeType":"YulFunctionCall","src":"1854:29:18"},"variableNames":[{"name":"value0","nativeSrc":"1844:6:18","nodeType":"YulIdentifier","src":"1844:6:18"}]},{"nativeSrc":"1892:48:18","nodeType":"YulAssignment","src":"1892:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1925:9:18","nodeType":"YulIdentifier","src":"1925:9:18"},{"kind":"number","nativeSrc":"1936:2:18","nodeType":"YulLiteral","src":"1936:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1921:3:18","nodeType":"YulIdentifier","src":"1921:3:18"},"nativeSrc":"1921:18:18","nodeType":"YulFunctionCall","src":"1921:18:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1902:18:18","nodeType":"YulIdentifier","src":"1902:18:18"},"nativeSrc":"1902:38:18","nodeType":"YulFunctionCall","src":"1902:38:18"},"variableNames":[{"name":"value1","nativeSrc":"1892:6:18","nodeType":"YulIdentifier","src":"1892:6:18"}]},{"nativeSrc":"1949:42:18","nodeType":"YulAssignment","src":"1949:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1976:9:18","nodeType":"YulIdentifier","src":"1976:9:18"},{"kind":"number","nativeSrc":"1987:2:18","nodeType":"YulLiteral","src":"1987:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1972:3:18","nodeType":"YulIdentifier","src":"1972:3:18"},"nativeSrc":"1972:18:18","nodeType":"YulFunctionCall","src":"1972:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"1959:12:18","nodeType":"YulIdentifier","src":"1959:12:18"},"nativeSrc":"1959:32:18","nodeType":"YulFunctionCall","src":"1959:32:18"},"variableNames":[{"name":"value2","nativeSrc":"1949:6:18","nodeType":"YulIdentifier","src":"1949:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1669:328:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1723:9:18","nodeType":"YulTypedName","src":"1723:9:18","type":""},{"name":"dataEnd","nativeSrc":"1734:7:18","nodeType":"YulTypedName","src":"1734:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1746:6:18","nodeType":"YulTypedName","src":"1746:6:18","type":""},{"name":"value1","nativeSrc":"1754:6:18","nodeType":"YulTypedName","src":"1754:6:18","type":""},{"name":"value2","nativeSrc":"1762:6:18","nodeType":"YulTypedName","src":"1762:6:18","type":""}],"src":"1669:328:18"},{"body":{"nativeSrc":"2072:110:18","nodeType":"YulBlock","src":"2072:110:18","statements":[{"body":{"nativeSrc":"2118:16:18","nodeType":"YulBlock","src":"2118:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2127:1:18","nodeType":"YulLiteral","src":"2127:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"2130:1:18","nodeType":"YulLiteral","src":"2130:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2120:6:18","nodeType":"YulIdentifier","src":"2120:6:18"},"nativeSrc":"2120:12:18","nodeType":"YulFunctionCall","src":"2120:12:18"},"nativeSrc":"2120:12:18","nodeType":"YulExpressionStatement","src":"2120:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2093:7:18","nodeType":"YulIdentifier","src":"2093:7:18"},{"name":"headStart","nativeSrc":"2102:9:18","nodeType":"YulIdentifier","src":"2102:9:18"}],"functionName":{"name":"sub","nativeSrc":"2089:3:18","nodeType":"YulIdentifier","src":"2089:3:18"},"nativeSrc":"2089:23:18","nodeType":"YulFunctionCall","src":"2089:23:18"},{"kind":"number","nativeSrc":"2114:2:18","nodeType":"YulLiteral","src":"2114:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2085:3:18","nodeType":"YulIdentifier","src":"2085:3:18"},"nativeSrc":"2085:32:18","nodeType":"YulFunctionCall","src":"2085:32:18"},"nativeSrc":"2082:52:18","nodeType":"YulIf","src":"2082:52:18"},{"nativeSrc":"2143:33:18","nodeType":"YulAssignment","src":"2143:33:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2166:9:18","nodeType":"YulIdentifier","src":"2166:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"2153:12:18","nodeType":"YulIdentifier","src":"2153:12:18"},"nativeSrc":"2153:23:18","nodeType":"YulFunctionCall","src":"2153:23:18"},"variableNames":[{"name":"value0","nativeSrc":"2143:6:18","nodeType":"YulIdentifier","src":"2143:6:18"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"2002:180:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2038:9:18","nodeType":"YulTypedName","src":"2038:9:18","type":""},{"name":"dataEnd","nativeSrc":"2049:7:18","nodeType":"YulTypedName","src":"2049:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2061:6:18","nodeType":"YulTypedName","src":"2061:6:18","type":""}],"src":"2002:180:18"},{"body":{"nativeSrc":"2288:76:18","nodeType":"YulBlock","src":"2288:76:18","statements":[{"nativeSrc":"2298:26:18","nodeType":"YulAssignment","src":"2298:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2310:9:18","nodeType":"YulIdentifier","src":"2310:9:18"},{"kind":"number","nativeSrc":"2321:2:18","nodeType":"YulLiteral","src":"2321:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2306:3:18","nodeType":"YulIdentifier","src":"2306:3:18"},"nativeSrc":"2306:18:18","nodeType":"YulFunctionCall","src":"2306:18:18"},"variableNames":[{"name":"tail","nativeSrc":"2298:4:18","nodeType":"YulIdentifier","src":"2298:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2340:9:18","nodeType":"YulIdentifier","src":"2340:9:18"},{"name":"value0","nativeSrc":"2351:6:18","nodeType":"YulIdentifier","src":"2351:6:18"}],"functionName":{"name":"mstore","nativeSrc":"2333:6:18","nodeType":"YulIdentifier","src":"2333:6:18"},"nativeSrc":"2333:25:18","nodeType":"YulFunctionCall","src":"2333:25:18"},"nativeSrc":"2333:25:18","nodeType":"YulExpressionStatement","src":"2333:25:18"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2187:177:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2257:9:18","nodeType":"YulTypedName","src":"2257:9:18","type":""},{"name":"value0","nativeSrc":"2268:6:18","nodeType":"YulTypedName","src":"2268:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2279:4:18","nodeType":"YulTypedName","src":"2279:4:18","type":""}],"src":"2187:177:18"},{"body":{"nativeSrc":"2473:218:18","nodeType":"YulBlock","src":"2473:218:18","statements":[{"body":{"nativeSrc":"2519:16:18","nodeType":"YulBlock","src":"2519:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2528:1:18","nodeType":"YulLiteral","src":"2528:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"2531:1:18","nodeType":"YulLiteral","src":"2531:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2521:6:18","nodeType":"YulIdentifier","src":"2521:6:18"},"nativeSrc":"2521:12:18","nodeType":"YulFunctionCall","src":"2521:12:18"},"nativeSrc":"2521:12:18","nodeType":"YulExpressionStatement","src":"2521:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2494:7:18","nodeType":"YulIdentifier","src":"2494:7:18"},{"name":"headStart","nativeSrc":"2503:9:18","nodeType":"YulIdentifier","src":"2503:9:18"}],"functionName":{"name":"sub","nativeSrc":"2490:3:18","nodeType":"YulIdentifier","src":"2490:3:18"},"nativeSrc":"2490:23:18","nodeType":"YulFunctionCall","src":"2490:23:18"},{"kind":"number","nativeSrc":"2515:2:18","nodeType":"YulLiteral","src":"2515:2:18","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2486:3:18","nodeType":"YulIdentifier","src":"2486:3:18"},"nativeSrc":"2486:32:18","nodeType":"YulFunctionCall","src":"2486:32:18"},"nativeSrc":"2483:52:18","nodeType":"YulIf","src":"2483:52:18"},{"nativeSrc":"2544:39:18","nodeType":"YulAssignment","src":"2544:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2573:9:18","nodeType":"YulIdentifier","src":"2573:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2554:18:18","nodeType":"YulIdentifier","src":"2554:18:18"},"nativeSrc":"2554:29:18","nodeType":"YulFunctionCall","src":"2554:29:18"},"variableNames":[{"name":"value0","nativeSrc":"2544:6:18","nodeType":"YulIdentifier","src":"2544:6:18"}]},{"nativeSrc":"2592:42:18","nodeType":"YulAssignment","src":"2592:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2619:9:18","nodeType":"YulIdentifier","src":"2619:9:18"},{"kind":"number","nativeSrc":"2630:2:18","nodeType":"YulLiteral","src":"2630:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2615:3:18","nodeType":"YulIdentifier","src":"2615:3:18"},"nativeSrc":"2615:18:18","nodeType":"YulFunctionCall","src":"2615:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"2602:12:18","nodeType":"YulIdentifier","src":"2602:12:18"},"nativeSrc":"2602:32:18","nodeType":"YulFunctionCall","src":"2602:32:18"},"variableNames":[{"name":"value1","nativeSrc":"2592:6:18","nodeType":"YulIdentifier","src":"2592:6:18"}]},{"nativeSrc":"2643:42:18","nodeType":"YulAssignment","src":"2643:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2670:9:18","nodeType":"YulIdentifier","src":"2670:9:18"},{"kind":"number","nativeSrc":"2681:2:18","nodeType":"YulLiteral","src":"2681:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2666:3:18","nodeType":"YulIdentifier","src":"2666:3:18"},"nativeSrc":"2666:18:18","nodeType":"YulFunctionCall","src":"2666:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"2653:12:18","nodeType":"YulIdentifier","src":"2653:12:18"},"nativeSrc":"2653:32:18","nodeType":"YulFunctionCall","src":"2653:32:18"},"variableNames":[{"name":"value2","nativeSrc":"2643:6:18","nodeType":"YulIdentifier","src":"2643:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes32","nativeSrc":"2369:322:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2423:9:18","nodeType":"YulTypedName","src":"2423:9:18","type":""},{"name":"dataEnd","nativeSrc":"2434:7:18","nodeType":"YulTypedName","src":"2434:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2446:6:18","nodeType":"YulTypedName","src":"2446:6:18","type":""},{"name":"value1","nativeSrc":"2454:6:18","nodeType":"YulTypedName","src":"2454:6:18","type":""},{"name":"value2","nativeSrc":"2462:6:18","nodeType":"YulTypedName","src":"2462:6:18","type":""}],"src":"2369:322:18"},{"body":{"nativeSrc":"2783:167:18","nodeType":"YulBlock","src":"2783:167:18","statements":[{"body":{"nativeSrc":"2829:16:18","nodeType":"YulBlock","src":"2829:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2838:1:18","nodeType":"YulLiteral","src":"2838:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"2841:1:18","nodeType":"YulLiteral","src":"2841:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2831:6:18","nodeType":"YulIdentifier","src":"2831:6:18"},"nativeSrc":"2831:12:18","nodeType":"YulFunctionCall","src":"2831:12:18"},"nativeSrc":"2831:12:18","nodeType":"YulExpressionStatement","src":"2831:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2804:7:18","nodeType":"YulIdentifier","src":"2804:7:18"},{"name":"headStart","nativeSrc":"2813:9:18","nodeType":"YulIdentifier","src":"2813:9:18"}],"functionName":{"name":"sub","nativeSrc":"2800:3:18","nodeType":"YulIdentifier","src":"2800:3:18"},"nativeSrc":"2800:23:18","nodeType":"YulFunctionCall","src":"2800:23:18"},{"kind":"number","nativeSrc":"2825:2:18","nodeType":"YulLiteral","src":"2825:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2796:3:18","nodeType":"YulIdentifier","src":"2796:3:18"},"nativeSrc":"2796:32:18","nodeType":"YulFunctionCall","src":"2796:32:18"},"nativeSrc":"2793:52:18","nodeType":"YulIf","src":"2793:52:18"},{"nativeSrc":"2854:33:18","nodeType":"YulAssignment","src":"2854:33:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2877:9:18","nodeType":"YulIdentifier","src":"2877:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"2864:12:18","nodeType":"YulIdentifier","src":"2864:12:18"},"nativeSrc":"2864:23:18","nodeType":"YulFunctionCall","src":"2864:23:18"},"variableNames":[{"name":"value0","nativeSrc":"2854:6:18","nodeType":"YulIdentifier","src":"2854:6:18"}]},{"nativeSrc":"2896:48:18","nodeType":"YulAssignment","src":"2896:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2929:9:18","nodeType":"YulIdentifier","src":"2929:9:18"},{"kind":"number","nativeSrc":"2940:2:18","nodeType":"YulLiteral","src":"2940:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2925:3:18","nodeType":"YulIdentifier","src":"2925:3:18"},"nativeSrc":"2925:18:18","nodeType":"YulFunctionCall","src":"2925:18:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2906:18:18","nodeType":"YulIdentifier","src":"2906:18:18"},"nativeSrc":"2906:38:18","nodeType":"YulFunctionCall","src":"2906:38:18"},"variableNames":[{"name":"value1","nativeSrc":"2896:6:18","nodeType":"YulIdentifier","src":"2896:6:18"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"2696:254:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2741:9:18","nodeType":"YulTypedName","src":"2741:9:18","type":""},{"name":"dataEnd","nativeSrc":"2752:7:18","nodeType":"YulTypedName","src":"2752:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2764:6:18","nodeType":"YulTypedName","src":"2764:6:18","type":""},{"name":"value1","nativeSrc":"2772:6:18","nodeType":"YulTypedName","src":"2772:6:18","type":""}],"src":"2696:254:18"},{"body":{"nativeSrc":"3052:87:18","nodeType":"YulBlock","src":"3052:87:18","statements":[{"nativeSrc":"3062:26:18","nodeType":"YulAssignment","src":"3062:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"3074:9:18","nodeType":"YulIdentifier","src":"3074:9:18"},{"kind":"number","nativeSrc":"3085:2:18","nodeType":"YulLiteral","src":"3085:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3070:3:18","nodeType":"YulIdentifier","src":"3070:3:18"},"nativeSrc":"3070:18:18","nodeType":"YulFunctionCall","src":"3070:18:18"},"variableNames":[{"name":"tail","nativeSrc":"3062:4:18","nodeType":"YulIdentifier","src":"3062:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3104:9:18","nodeType":"YulIdentifier","src":"3104:9:18"},{"arguments":[{"name":"value0","nativeSrc":"3119:6:18","nodeType":"YulIdentifier","src":"3119:6:18"},{"kind":"number","nativeSrc":"3127:4:18","nodeType":"YulLiteral","src":"3127:4:18","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3115:3:18","nodeType":"YulIdentifier","src":"3115:3:18"},"nativeSrc":"3115:17:18","nodeType":"YulFunctionCall","src":"3115:17:18"}],"functionName":{"name":"mstore","nativeSrc":"3097:6:18","nodeType":"YulIdentifier","src":"3097:6:18"},"nativeSrc":"3097:36:18","nodeType":"YulFunctionCall","src":"3097:36:18"},"nativeSrc":"3097:36:18","nodeType":"YulExpressionStatement","src":"3097:36:18"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"2955:184:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3021:9:18","nodeType":"YulTypedName","src":"3021:9:18","type":""},{"name":"value0","nativeSrc":"3032:6:18","nodeType":"YulTypedName","src":"3032:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3043:4:18","nodeType":"YulTypedName","src":"3043:4:18","type":""}],"src":"2955:184:18"},{"body":{"nativeSrc":"3284:662:18","nodeType":"YulBlock","src":"3284:662:18","statements":[{"body":{"nativeSrc":"3331:16:18","nodeType":"YulBlock","src":"3331:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3340:1:18","nodeType":"YulLiteral","src":"3340:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"3343:1:18","nodeType":"YulLiteral","src":"3343:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3333:6:18","nodeType":"YulIdentifier","src":"3333:6:18"},"nativeSrc":"3333:12:18","nodeType":"YulFunctionCall","src":"3333:12:18"},"nativeSrc":"3333:12:18","nodeType":"YulExpressionStatement","src":"3333:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3305:7:18","nodeType":"YulIdentifier","src":"3305:7:18"},{"name":"headStart","nativeSrc":"3314:9:18","nodeType":"YulIdentifier","src":"3314:9:18"}],"functionName":{"name":"sub","nativeSrc":"3301:3:18","nodeType":"YulIdentifier","src":"3301:3:18"},"nativeSrc":"3301:23:18","nodeType":"YulFunctionCall","src":"3301:23:18"},{"kind":"number","nativeSrc":"3326:3:18","nodeType":"YulLiteral","src":"3326:3:18","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"3297:3:18","nodeType":"YulIdentifier","src":"3297:3:18"},"nativeSrc":"3297:33:18","nodeType":"YulFunctionCall","src":"3297:33:18"},"nativeSrc":"3294:53:18","nodeType":"YulIf","src":"3294:53:18"},{"nativeSrc":"3356:39:18","nodeType":"YulAssignment","src":"3356:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"3385:9:18","nodeType":"YulIdentifier","src":"3385:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3366:18:18","nodeType":"YulIdentifier","src":"3366:18:18"},"nativeSrc":"3366:29:18","nodeType":"YulFunctionCall","src":"3366:29:18"},"variableNames":[{"name":"value0","nativeSrc":"3356:6:18","nodeType":"YulIdentifier","src":"3356:6:18"}]},{"nativeSrc":"3404:42:18","nodeType":"YulAssignment","src":"3404:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3431:9:18","nodeType":"YulIdentifier","src":"3431:9:18"},{"kind":"number","nativeSrc":"3442:2:18","nodeType":"YulLiteral","src":"3442:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3427:3:18","nodeType":"YulIdentifier","src":"3427:3:18"},"nativeSrc":"3427:18:18","nodeType":"YulFunctionCall","src":"3427:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"3414:12:18","nodeType":"YulIdentifier","src":"3414:12:18"},"nativeSrc":"3414:32:18","nodeType":"YulFunctionCall","src":"3414:32:18"},"variableNames":[{"name":"value1","nativeSrc":"3404:6:18","nodeType":"YulIdentifier","src":"3404:6:18"}]},{"nativeSrc":"3455:42:18","nodeType":"YulAssignment","src":"3455:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3482:9:18","nodeType":"YulIdentifier","src":"3482:9:18"},{"kind":"number","nativeSrc":"3493:2:18","nodeType":"YulLiteral","src":"3493:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3478:3:18","nodeType":"YulIdentifier","src":"3478:3:18"},"nativeSrc":"3478:18:18","nodeType":"YulFunctionCall","src":"3478:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"3465:12:18","nodeType":"YulIdentifier","src":"3465:12:18"},"nativeSrc":"3465:32:18","nodeType":"YulFunctionCall","src":"3465:32:18"},"variableNames":[{"name":"value2","nativeSrc":"3455:6:18","nodeType":"YulIdentifier","src":"3455:6:18"}]},{"nativeSrc":"3506:46:18","nodeType":"YulVariableDeclaration","src":"3506:46:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3537:9:18","nodeType":"YulIdentifier","src":"3537:9:18"},{"kind":"number","nativeSrc":"3548:2:18","nodeType":"YulLiteral","src":"3548:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3533:3:18","nodeType":"YulIdentifier","src":"3533:3:18"},"nativeSrc":"3533:18:18","nodeType":"YulFunctionCall","src":"3533:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"3520:12:18","nodeType":"YulIdentifier","src":"3520:12:18"},"nativeSrc":"3520:32:18","nodeType":"YulFunctionCall","src":"3520:32:18"},"variables":[{"name":"offset","nativeSrc":"3510:6:18","nodeType":"YulTypedName","src":"3510:6:18","type":""}]},{"nativeSrc":"3561:28:18","nodeType":"YulVariableDeclaration","src":"3561:28:18","value":{"kind":"number","nativeSrc":"3571:18:18","nodeType":"YulLiteral","src":"3571:18:18","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"3565:2:18","nodeType":"YulTypedName","src":"3565:2:18","type":""}]},{"body":{"nativeSrc":"3616:16:18","nodeType":"YulBlock","src":"3616:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3625:1:18","nodeType":"YulLiteral","src":"3625:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"3628:1:18","nodeType":"YulLiteral","src":"3628:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3618:6:18","nodeType":"YulIdentifier","src":"3618:6:18"},"nativeSrc":"3618:12:18","nodeType":"YulFunctionCall","src":"3618:12:18"},"nativeSrc":"3618:12:18","nodeType":"YulExpressionStatement","src":"3618:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3604:6:18","nodeType":"YulIdentifier","src":"3604:6:18"},{"name":"_1","nativeSrc":"3612:2:18","nodeType":"YulIdentifier","src":"3612:2:18"}],"functionName":{"name":"gt","nativeSrc":"3601:2:18","nodeType":"YulIdentifier","src":"3601:2:18"},"nativeSrc":"3601:14:18","nodeType":"YulFunctionCall","src":"3601:14:18"},"nativeSrc":"3598:34:18","nodeType":"YulIf","src":"3598:34:18"},{"nativeSrc":"3641:32:18","nodeType":"YulVariableDeclaration","src":"3641:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"3655:9:18","nodeType":"YulIdentifier","src":"3655:9:18"},{"name":"offset","nativeSrc":"3666:6:18","nodeType":"YulIdentifier","src":"3666:6:18"}],"functionName":{"name":"add","nativeSrc":"3651:3:18","nodeType":"YulIdentifier","src":"3651:3:18"},"nativeSrc":"3651:22:18","nodeType":"YulFunctionCall","src":"3651:22:18"},"variables":[{"name":"_2","nativeSrc":"3645:2:18","nodeType":"YulTypedName","src":"3645:2:18","type":""}]},{"body":{"nativeSrc":"3721:16:18","nodeType":"YulBlock","src":"3721:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3730:1:18","nodeType":"YulLiteral","src":"3730:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"3733:1:18","nodeType":"YulLiteral","src":"3733:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3723:6:18","nodeType":"YulIdentifier","src":"3723:6:18"},"nativeSrc":"3723:12:18","nodeType":"YulFunctionCall","src":"3723:12:18"},"nativeSrc":"3723:12:18","nodeType":"YulExpressionStatement","src":"3723:12:18"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"3700:2:18","nodeType":"YulIdentifier","src":"3700:2:18"},{"kind":"number","nativeSrc":"3704:4:18","nodeType":"YulLiteral","src":"3704:4:18","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3696:3:18","nodeType":"YulIdentifier","src":"3696:3:18"},"nativeSrc":"3696:13:18","nodeType":"YulFunctionCall","src":"3696:13:18"},{"name":"dataEnd","nativeSrc":"3711:7:18","nodeType":"YulIdentifier","src":"3711:7:18"}],"functionName":{"name":"slt","nativeSrc":"3692:3:18","nodeType":"YulIdentifier","src":"3692:3:18"},"nativeSrc":"3692:27:18","nodeType":"YulFunctionCall","src":"3692:27:18"}],"functionName":{"name":"iszero","nativeSrc":"3685:6:18","nodeType":"YulIdentifier","src":"3685:6:18"},"nativeSrc":"3685:35:18","nodeType":"YulFunctionCall","src":"3685:35:18"},"nativeSrc":"3682:55:18","nodeType":"YulIf","src":"3682:55:18"},{"nativeSrc":"3746:30:18","nodeType":"YulVariableDeclaration","src":"3746:30:18","value":{"arguments":[{"name":"_2","nativeSrc":"3773:2:18","nodeType":"YulIdentifier","src":"3773:2:18"}],"functionName":{"name":"calldataload","nativeSrc":"3760:12:18","nodeType":"YulIdentifier","src":"3760:12:18"},"nativeSrc":"3760:16:18","nodeType":"YulFunctionCall","src":"3760:16:18"},"variables":[{"name":"length","nativeSrc":"3750:6:18","nodeType":"YulTypedName","src":"3750:6:18","type":""}]},{"body":{"nativeSrc":"3803:16:18","nodeType":"YulBlock","src":"3803:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3812:1:18","nodeType":"YulLiteral","src":"3812:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"3815:1:18","nodeType":"YulLiteral","src":"3815:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3805:6:18","nodeType":"YulIdentifier","src":"3805:6:18"},"nativeSrc":"3805:12:18","nodeType":"YulFunctionCall","src":"3805:12:18"},"nativeSrc":"3805:12:18","nodeType":"YulExpressionStatement","src":"3805:12:18"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3791:6:18","nodeType":"YulIdentifier","src":"3791:6:18"},{"name":"_1","nativeSrc":"3799:2:18","nodeType":"YulIdentifier","src":"3799:2:18"}],"functionName":{"name":"gt","nativeSrc":"3788:2:18","nodeType":"YulIdentifier","src":"3788:2:18"},"nativeSrc":"3788:14:18","nodeType":"YulFunctionCall","src":"3788:14:18"},"nativeSrc":"3785:34:18","nodeType":"YulIf","src":"3785:34:18"},{"body":{"nativeSrc":"3869:16:18","nodeType":"YulBlock","src":"3869:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3878:1:18","nodeType":"YulLiteral","src":"3878:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"3881:1:18","nodeType":"YulLiteral","src":"3881:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3871:6:18","nodeType":"YulIdentifier","src":"3871:6:18"},"nativeSrc":"3871:12:18","nodeType":"YulFunctionCall","src":"3871:12:18"},"nativeSrc":"3871:12:18","nodeType":"YulExpressionStatement","src":"3871:12:18"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"3842:2:18","nodeType":"YulIdentifier","src":"3842:2:18"},{"name":"length","nativeSrc":"3846:6:18","nodeType":"YulIdentifier","src":"3846:6:18"}],"functionName":{"name":"add","nativeSrc":"3838:3:18","nodeType":"YulIdentifier","src":"3838:3:18"},"nativeSrc":"3838:15:18","nodeType":"YulFunctionCall","src":"3838:15:18"},{"kind":"number","nativeSrc":"3855:2:18","nodeType":"YulLiteral","src":"3855:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3834:3:18","nodeType":"YulIdentifier","src":"3834:3:18"},"nativeSrc":"3834:24:18","nodeType":"YulFunctionCall","src":"3834:24:18"},{"name":"dataEnd","nativeSrc":"3860:7:18","nodeType":"YulIdentifier","src":"3860:7:18"}],"functionName":{"name":"gt","nativeSrc":"3831:2:18","nodeType":"YulIdentifier","src":"3831:2:18"},"nativeSrc":"3831:37:18","nodeType":"YulFunctionCall","src":"3831:37:18"},"nativeSrc":"3828:57:18","nodeType":"YulIf","src":"3828:57:18"},{"nativeSrc":"3894:21:18","nodeType":"YulAssignment","src":"3894:21:18","value":{"arguments":[{"name":"_2","nativeSrc":"3908:2:18","nodeType":"YulIdentifier","src":"3908:2:18"},{"kind":"number","nativeSrc":"3912:2:18","nodeType":"YulLiteral","src":"3912:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3904:3:18","nodeType":"YulIdentifier","src":"3904:3:18"},"nativeSrc":"3904:11:18","nodeType":"YulFunctionCall","src":"3904:11:18"},"variableNames":[{"name":"value3","nativeSrc":"3894:6:18","nodeType":"YulIdentifier","src":"3894:6:18"}]},{"nativeSrc":"3924:16:18","nodeType":"YulAssignment","src":"3924:16:18","value":{"name":"length","nativeSrc":"3934:6:18","nodeType":"YulIdentifier","src":"3934:6:18"},"variableNames":[{"name":"value4","nativeSrc":"3924:6:18","nodeType":"YulIdentifier","src":"3924:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes_calldata_ptr","nativeSrc":"3144:802:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3218:9:18","nodeType":"YulTypedName","src":"3218:9:18","type":""},{"name":"dataEnd","nativeSrc":"3229:7:18","nodeType":"YulTypedName","src":"3229:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3241:6:18","nodeType":"YulTypedName","src":"3241:6:18","type":""},{"name":"value1","nativeSrc":"3249:6:18","nodeType":"YulTypedName","src":"3249:6:18","type":""},{"name":"value2","nativeSrc":"3257:6:18","nodeType":"YulTypedName","src":"3257:6:18","type":""},{"name":"value3","nativeSrc":"3265:6:18","nodeType":"YulTypedName","src":"3265:6:18","type":""},{"name":"value4","nativeSrc":"3273:6:18","nodeType":"YulTypedName","src":"3273:6:18","type":""}],"src":"3144:802:18"},{"body":{"nativeSrc":"4021:116:18","nodeType":"YulBlock","src":"4021:116:18","statements":[{"body":{"nativeSrc":"4067:16:18","nodeType":"YulBlock","src":"4067:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4076:1:18","nodeType":"YulLiteral","src":"4076:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"4079:1:18","nodeType":"YulLiteral","src":"4079:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4069:6:18","nodeType":"YulIdentifier","src":"4069:6:18"},"nativeSrc":"4069:12:18","nodeType":"YulFunctionCall","src":"4069:12:18"},"nativeSrc":"4069:12:18","nodeType":"YulExpressionStatement","src":"4069:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4042:7:18","nodeType":"YulIdentifier","src":"4042:7:18"},{"name":"headStart","nativeSrc":"4051:9:18","nodeType":"YulIdentifier","src":"4051:9:18"}],"functionName":{"name":"sub","nativeSrc":"4038:3:18","nodeType":"YulIdentifier","src":"4038:3:18"},"nativeSrc":"4038:23:18","nodeType":"YulFunctionCall","src":"4038:23:18"},{"kind":"number","nativeSrc":"4063:2:18","nodeType":"YulLiteral","src":"4063:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4034:3:18","nodeType":"YulIdentifier","src":"4034:3:18"},"nativeSrc":"4034:32:18","nodeType":"YulFunctionCall","src":"4034:32:18"},"nativeSrc":"4031:52:18","nodeType":"YulIf","src":"4031:52:18"},{"nativeSrc":"4092:39:18","nodeType":"YulAssignment","src":"4092:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"4121:9:18","nodeType":"YulIdentifier","src":"4121:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4102:18:18","nodeType":"YulIdentifier","src":"4102:18:18"},"nativeSrc":"4102:29:18","nodeType":"YulFunctionCall","src":"4102:29:18"},"variableNames":[{"name":"value0","nativeSrc":"4092:6:18","nodeType":"YulIdentifier","src":"4092:6:18"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3951:186:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3987:9:18","nodeType":"YulTypedName","src":"3987:9:18","type":""},{"name":"dataEnd","nativeSrc":"3998:7:18","nodeType":"YulTypedName","src":"3998:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4010:6:18","nodeType":"YulTypedName","src":"4010:6:18","type":""}],"src":"3951:186:18"},{"body":{"nativeSrc":"4229:173:18","nodeType":"YulBlock","src":"4229:173:18","statements":[{"body":{"nativeSrc":"4275:16:18","nodeType":"YulBlock","src":"4275:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4284:1:18","nodeType":"YulLiteral","src":"4284:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"4287:1:18","nodeType":"YulLiteral","src":"4287:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4277:6:18","nodeType":"YulIdentifier","src":"4277:6:18"},"nativeSrc":"4277:12:18","nodeType":"YulFunctionCall","src":"4277:12:18"},"nativeSrc":"4277:12:18","nodeType":"YulExpressionStatement","src":"4277:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4250:7:18","nodeType":"YulIdentifier","src":"4250:7:18"},{"name":"headStart","nativeSrc":"4259:9:18","nodeType":"YulIdentifier","src":"4259:9:18"}],"functionName":{"name":"sub","nativeSrc":"4246:3:18","nodeType":"YulIdentifier","src":"4246:3:18"},"nativeSrc":"4246:23:18","nodeType":"YulFunctionCall","src":"4246:23:18"},{"kind":"number","nativeSrc":"4271:2:18","nodeType":"YulLiteral","src":"4271:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4242:3:18","nodeType":"YulIdentifier","src":"4242:3:18"},"nativeSrc":"4242:32:18","nodeType":"YulFunctionCall","src":"4242:32:18"},"nativeSrc":"4239:52:18","nodeType":"YulIf","src":"4239:52:18"},{"nativeSrc":"4300:39:18","nodeType":"YulAssignment","src":"4300:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"4329:9:18","nodeType":"YulIdentifier","src":"4329:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4310:18:18","nodeType":"YulIdentifier","src":"4310:18:18"},"nativeSrc":"4310:29:18","nodeType":"YulFunctionCall","src":"4310:29:18"},"variableNames":[{"name":"value0","nativeSrc":"4300:6:18","nodeType":"YulIdentifier","src":"4300:6:18"}]},{"nativeSrc":"4348:48:18","nodeType":"YulAssignment","src":"4348:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4381:9:18","nodeType":"YulIdentifier","src":"4381:9:18"},{"kind":"number","nativeSrc":"4392:2:18","nodeType":"YulLiteral","src":"4392:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4377:3:18","nodeType":"YulIdentifier","src":"4377:3:18"},"nativeSrc":"4377:18:18","nodeType":"YulFunctionCall","src":"4377:18:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4358:18:18","nodeType":"YulIdentifier","src":"4358:18:18"},"nativeSrc":"4358:38:18","nodeType":"YulFunctionCall","src":"4358:38:18"},"variableNames":[{"name":"value1","nativeSrc":"4348:6:18","nodeType":"YulIdentifier","src":"4348:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"4142:260:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4187:9:18","nodeType":"YulTypedName","src":"4187:9:18","type":""},{"name":"dataEnd","nativeSrc":"4198:7:18","nodeType":"YulTypedName","src":"4198:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4210:6:18","nodeType":"YulTypedName","src":"4210:6:18","type":""},{"name":"value1","nativeSrc":"4218:6:18","nodeType":"YulTypedName","src":"4218:6:18","type":""}],"src":"4142:260:18"},{"body":{"nativeSrc":"4462:325:18","nodeType":"YulBlock","src":"4462:325:18","statements":[{"nativeSrc":"4472:22:18","nodeType":"YulAssignment","src":"4472:22:18","value":{"arguments":[{"kind":"number","nativeSrc":"4486:1:18","nodeType":"YulLiteral","src":"4486:1:18","type":"","value":"1"},{"name":"data","nativeSrc":"4489:4:18","nodeType":"YulIdentifier","src":"4489:4:18"}],"functionName":{"name":"shr","nativeSrc":"4482:3:18","nodeType":"YulIdentifier","src":"4482:3:18"},"nativeSrc":"4482:12:18","nodeType":"YulFunctionCall","src":"4482:12:18"},"variableNames":[{"name":"length","nativeSrc":"4472:6:18","nodeType":"YulIdentifier","src":"4472:6:18"}]},{"nativeSrc":"4503:38:18","nodeType":"YulVariableDeclaration","src":"4503:38:18","value":{"arguments":[{"name":"data","nativeSrc":"4533:4:18","nodeType":"YulIdentifier","src":"4533:4:18"},{"kind":"number","nativeSrc":"4539:1:18","nodeType":"YulLiteral","src":"4539:1:18","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"4529:3:18","nodeType":"YulIdentifier","src":"4529:3:18"},"nativeSrc":"4529:12:18","nodeType":"YulFunctionCall","src":"4529:12:18"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"4507:18:18","nodeType":"YulTypedName","src":"4507:18:18","type":""}]},{"body":{"nativeSrc":"4580:31:18","nodeType":"YulBlock","src":"4580:31:18","statements":[{"nativeSrc":"4582:27:18","nodeType":"YulAssignment","src":"4582:27:18","value":{"arguments":[{"name":"length","nativeSrc":"4596:6:18","nodeType":"YulIdentifier","src":"4596:6:18"},{"kind":"number","nativeSrc":"4604:4:18","nodeType":"YulLiteral","src":"4604:4:18","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"4592:3:18","nodeType":"YulIdentifier","src":"4592:3:18"},"nativeSrc":"4592:17:18","nodeType":"YulFunctionCall","src":"4592:17:18"},"variableNames":[{"name":"length","nativeSrc":"4582:6:18","nodeType":"YulIdentifier","src":"4582:6:18"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4560:18:18","nodeType":"YulIdentifier","src":"4560:18:18"}],"functionName":{"name":"iszero","nativeSrc":"4553:6:18","nodeType":"YulIdentifier","src":"4553:6:18"},"nativeSrc":"4553:26:18","nodeType":"YulFunctionCall","src":"4553:26:18"},"nativeSrc":"4550:61:18","nodeType":"YulIf","src":"4550:61:18"},{"body":{"nativeSrc":"4670:111:18","nodeType":"YulBlock","src":"4670:111:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4691:1:18","nodeType":"YulLiteral","src":"4691:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4698:3:18","nodeType":"YulLiteral","src":"4698:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"4703:10:18","nodeType":"YulLiteral","src":"4703:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4694:3:18","nodeType":"YulIdentifier","src":"4694:3:18"},"nativeSrc":"4694:20:18","nodeType":"YulFunctionCall","src":"4694:20:18"}],"functionName":{"name":"mstore","nativeSrc":"4684:6:18","nodeType":"YulIdentifier","src":"4684:6:18"},"nativeSrc":"4684:31:18","nodeType":"YulFunctionCall","src":"4684:31:18"},"nativeSrc":"4684:31:18","nodeType":"YulExpressionStatement","src":"4684:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4735:1:18","nodeType":"YulLiteral","src":"4735:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"4738:4:18","nodeType":"YulLiteral","src":"4738:4:18","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"4728:6:18","nodeType":"YulIdentifier","src":"4728:6:18"},"nativeSrc":"4728:15:18","nodeType":"YulFunctionCall","src":"4728:15:18"},"nativeSrc":"4728:15:18","nodeType":"YulExpressionStatement","src":"4728:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4763:1:18","nodeType":"YulLiteral","src":"4763:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"4766:4:18","nodeType":"YulLiteral","src":"4766:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4756:6:18","nodeType":"YulIdentifier","src":"4756:6:18"},"nativeSrc":"4756:15:18","nodeType":"YulFunctionCall","src":"4756:15:18"},"nativeSrc":"4756:15:18","nodeType":"YulExpressionStatement","src":"4756:15:18"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4626:18:18","nodeType":"YulIdentifier","src":"4626:18:18"},{"arguments":[{"name":"length","nativeSrc":"4649:6:18","nodeType":"YulIdentifier","src":"4649:6:18"},{"kind":"number","nativeSrc":"4657:2:18","nodeType":"YulLiteral","src":"4657:2:18","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4646:2:18","nodeType":"YulIdentifier","src":"4646:2:18"},"nativeSrc":"4646:14:18","nodeType":"YulFunctionCall","src":"4646:14:18"}],"functionName":{"name":"eq","nativeSrc":"4623:2:18","nodeType":"YulIdentifier","src":"4623:2:18"},"nativeSrc":"4623:38:18","nodeType":"YulFunctionCall","src":"4623:38:18"},"nativeSrc":"4620:161:18","nodeType":"YulIf","src":"4620:161:18"}]},"name":"extract_byte_array_length","nativeSrc":"4407:380:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4442:4:18","nodeType":"YulTypedName","src":"4442:4:18","type":""}],"returnVariables":[{"name":"length","nativeSrc":"4451:6:18","nodeType":"YulTypedName","src":"4451:6:18","type":""}],"src":"4407:380:18"},{"body":{"nativeSrc":"4966:166:18","nodeType":"YulBlock","src":"4966:166:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4983:9:18","nodeType":"YulIdentifier","src":"4983:9:18"},{"kind":"number","nativeSrc":"4994:2:18","nodeType":"YulLiteral","src":"4994:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4976:6:18","nodeType":"YulIdentifier","src":"4976:6:18"},"nativeSrc":"4976:21:18","nodeType":"YulFunctionCall","src":"4976:21:18"},"nativeSrc":"4976:21:18","nodeType":"YulExpressionStatement","src":"4976:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5017:9:18","nodeType":"YulIdentifier","src":"5017:9:18"},{"kind":"number","nativeSrc":"5028:2:18","nodeType":"YulLiteral","src":"5028:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5013:3:18","nodeType":"YulIdentifier","src":"5013:3:18"},"nativeSrc":"5013:18:18","nodeType":"YulFunctionCall","src":"5013:18:18"},{"kind":"number","nativeSrc":"5033:2:18","nodeType":"YulLiteral","src":"5033:2:18","type":"","value":"16"}],"functionName":{"name":"mstore","nativeSrc":"5006:6:18","nodeType":"YulIdentifier","src":"5006:6:18"},"nativeSrc":"5006:30:18","nodeType":"YulFunctionCall","src":"5006:30:18"},"nativeSrc":"5006:30:18","nodeType":"YulExpressionStatement","src":"5006:30:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5056:9:18","nodeType":"YulIdentifier","src":"5056:9:18"},{"kind":"number","nativeSrc":"5067:2:18","nodeType":"YulLiteral","src":"5067:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5052:3:18","nodeType":"YulIdentifier","src":"5052:3:18"},"nativeSrc":"5052:18:18","nodeType":"YulFunctionCall","src":"5052:18:18"},{"hexValue":"696e76616c69642070726f7669646572","kind":"string","nativeSrc":"5072:18:18","nodeType":"YulLiteral","src":"5072:18:18","type":"","value":"invalid provider"}],"functionName":{"name":"mstore","nativeSrc":"5045:6:18","nodeType":"YulIdentifier","src":"5045:6:18"},"nativeSrc":"5045:46:18","nodeType":"YulFunctionCall","src":"5045:46:18"},"nativeSrc":"5045:46:18","nodeType":"YulExpressionStatement","src":"5045:46:18"},{"nativeSrc":"5100:26:18","nodeType":"YulAssignment","src":"5100:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"5112:9:18","nodeType":"YulIdentifier","src":"5112:9:18"},{"kind":"number","nativeSrc":"5123:2:18","nodeType":"YulLiteral","src":"5123:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5108:3:18","nodeType":"YulIdentifier","src":"5108:3:18"},"nativeSrc":"5108:18:18","nodeType":"YulFunctionCall","src":"5108:18:18"},"variableNames":[{"name":"tail","nativeSrc":"5100:4:18","nodeType":"YulIdentifier","src":"5100:4:18"}]}]},"name":"abi_encode_tuple_t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"4792:340:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4943:9:18","nodeType":"YulTypedName","src":"4943:9:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4957:4:18","nodeType":"YulTypedName","src":"4957:4:18","type":""}],"src":"4792:340:18"},{"body":{"nativeSrc":"5311:163:18","nodeType":"YulBlock","src":"5311:163:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5328:9:18","nodeType":"YulIdentifier","src":"5328:9:18"},{"kind":"number","nativeSrc":"5339:2:18","nodeType":"YulLiteral","src":"5339:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"5321:6:18","nodeType":"YulIdentifier","src":"5321:6:18"},"nativeSrc":"5321:21:18","nodeType":"YulFunctionCall","src":"5321:21:18"},"nativeSrc":"5321:21:18","nodeType":"YulExpressionStatement","src":"5321:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5362:9:18","nodeType":"YulIdentifier","src":"5362:9:18"},{"kind":"number","nativeSrc":"5373:2:18","nodeType":"YulLiteral","src":"5373:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5358:3:18","nodeType":"YulIdentifier","src":"5358:3:18"},"nativeSrc":"5358:18:18","nodeType":"YulFunctionCall","src":"5358:18:18"},{"kind":"number","nativeSrc":"5378:2:18","nodeType":"YulLiteral","src":"5378:2:18","type":"","value":"13"}],"functionName":{"name":"mstore","nativeSrc":"5351:6:18","nodeType":"YulIdentifier","src":"5351:6:18"},"nativeSrc":"5351:30:18","nodeType":"YulFunctionCall","src":"5351:30:18"},"nativeSrc":"5351:30:18","nodeType":"YulExpressionStatement","src":"5351:30:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5401:9:18","nodeType":"YulIdentifier","src":"5401:9:18"},{"kind":"number","nativeSrc":"5412:2:18","nodeType":"YulLiteral","src":"5412:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5397:3:18","nodeType":"YulIdentifier","src":"5397:3:18"},"nativeSrc":"5397:18:18","nodeType":"YulFunctionCall","src":"5397:18:18"},{"hexValue":"696e76616c696420756e697473","kind":"string","nativeSrc":"5417:15:18","nodeType":"YulLiteral","src":"5417:15:18","type":"","value":"invalid units"}],"functionName":{"name":"mstore","nativeSrc":"5390:6:18","nodeType":"YulIdentifier","src":"5390:6:18"},"nativeSrc":"5390:43:18","nodeType":"YulFunctionCall","src":"5390:43:18"},"nativeSrc":"5390:43:18","nodeType":"YulExpressionStatement","src":"5390:43:18"},{"nativeSrc":"5442:26:18","nodeType":"YulAssignment","src":"5442:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"5454:9:18","nodeType":"YulIdentifier","src":"5454:9:18"},{"kind":"number","nativeSrc":"5465:2:18","nodeType":"YulLiteral","src":"5465:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5450:3:18","nodeType":"YulIdentifier","src":"5450:3:18"},"nativeSrc":"5450:18:18","nodeType":"YulFunctionCall","src":"5450:18:18"},"variableNames":[{"name":"tail","nativeSrc":"5442:4:18","nodeType":"YulIdentifier","src":"5442:4:18"}]}]},"name":"abi_encode_tuple_t_stringliteral_71f86cf417ff59fbe7c0fe4d47bc3a27555955742eedee4393c55e5ebd9347cc__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5137:337:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5288:9:18","nodeType":"YulTypedName","src":"5288:9:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5302:4:18","nodeType":"YulTypedName","src":"5302:4:18","type":""}],"src":"5137:337:18"},{"body":{"nativeSrc":"5653:174:18","nodeType":"YulBlock","src":"5653:174:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5670:9:18","nodeType":"YulIdentifier","src":"5670:9:18"},{"kind":"number","nativeSrc":"5681:2:18","nodeType":"YulLiteral","src":"5681:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"5663:6:18","nodeType":"YulIdentifier","src":"5663:6:18"},"nativeSrc":"5663:21:18","nodeType":"YulFunctionCall","src":"5663:21:18"},"nativeSrc":"5663:21:18","nodeType":"YulExpressionStatement","src":"5663:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5704:9:18","nodeType":"YulIdentifier","src":"5704:9:18"},{"kind":"number","nativeSrc":"5715:2:18","nodeType":"YulLiteral","src":"5715:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5700:3:18","nodeType":"YulIdentifier","src":"5700:3:18"},"nativeSrc":"5700:18:18","nodeType":"YulFunctionCall","src":"5700:18:18"},{"kind":"number","nativeSrc":"5720:2:18","nodeType":"YulLiteral","src":"5720:2:18","type":"","value":"24"}],"functionName":{"name":"mstore","nativeSrc":"5693:6:18","nodeType":"YulIdentifier","src":"5693:6:18"},"nativeSrc":"5693:30:18","nodeType":"YulFunctionCall","src":"5693:30:18"},"nativeSrc":"5693:30:18","nodeType":"YulExpressionStatement","src":"5693:30:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5743:9:18","nodeType":"YulIdentifier","src":"5743:9:18"},{"kind":"number","nativeSrc":"5754:2:18","nodeType":"YulLiteral","src":"5754:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5739:3:18","nodeType":"YulIdentifier","src":"5739:3:18"},"nativeSrc":"5739:18:18","nodeType":"YulFunctionCall","src":"5739:18:18"},{"hexValue":"7265636569707420616c726561647920636f6e73756d6564","kind":"string","nativeSrc":"5759:26:18","nodeType":"YulLiteral","src":"5759:26:18","type":"","value":"receipt already consumed"}],"functionName":{"name":"mstore","nativeSrc":"5732:6:18","nodeType":"YulIdentifier","src":"5732:6:18"},"nativeSrc":"5732:54:18","nodeType":"YulFunctionCall","src":"5732:54:18"},"nativeSrc":"5732:54:18","nodeType":"YulExpressionStatement","src":"5732:54:18"},{"nativeSrc":"5795:26:18","nodeType":"YulAssignment","src":"5795:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"5807:9:18","nodeType":"YulIdentifier","src":"5807:9:18"},{"kind":"number","nativeSrc":"5818:2:18","nodeType":"YulLiteral","src":"5818:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5803:3:18","nodeType":"YulIdentifier","src":"5803:3:18"},"nativeSrc":"5803:18:18","nodeType":"YulFunctionCall","src":"5803:18:18"},"variableNames":[{"name":"tail","nativeSrc":"5795:4:18","nodeType":"YulIdentifier","src":"5795:4:18"}]}]},"name":"abi_encode_tuple_t_stringliteral_aa5e8e776638b05fbc051ae185efa3102982bf1d06944b75bb2872751226b5c4__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5479:348:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5630:9:18","nodeType":"YulTypedName","src":"5630:9:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5644:4:18","nodeType":"YulTypedName","src":"5644:4:18","type":""}],"src":"5479:348:18"},{"body":{"nativeSrc":"6006:176:18","nodeType":"YulBlock","src":"6006:176:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6023:9:18","nodeType":"YulIdentifier","src":"6023:9:18"},{"kind":"number","nativeSrc":"6034:2:18","nodeType":"YulLiteral","src":"6034:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"6016:6:18","nodeType":"YulIdentifier","src":"6016:6:18"},"nativeSrc":"6016:21:18","nodeType":"YulFunctionCall","src":"6016:21:18"},"nativeSrc":"6016:21:18","nodeType":"YulExpressionStatement","src":"6016:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6057:9:18","nodeType":"YulIdentifier","src":"6057:9:18"},{"kind":"number","nativeSrc":"6068:2:18","nodeType":"YulLiteral","src":"6068:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6053:3:18","nodeType":"YulIdentifier","src":"6053:3:18"},"nativeSrc":"6053:18:18","nodeType":"YulFunctionCall","src":"6053:18:18"},{"kind":"number","nativeSrc":"6073:2:18","nodeType":"YulLiteral","src":"6073:2:18","type":"","value":"26"}],"functionName":{"name":"mstore","nativeSrc":"6046:6:18","nodeType":"YulIdentifier","src":"6046:6:18"},"nativeSrc":"6046:30:18","nodeType":"YulFunctionCall","src":"6046:30:18"},"nativeSrc":"6046:30:18","nodeType":"YulExpressionStatement","src":"6046:30:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6096:9:18","nodeType":"YulIdentifier","src":"6096:9:18"},{"kind":"number","nativeSrc":"6107:2:18","nodeType":"YulLiteral","src":"6107:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6092:3:18","nodeType":"YulIdentifier","src":"6092:3:18"},"nativeSrc":"6092:18:18","nodeType":"YulFunctionCall","src":"6092:18:18"},{"hexValue":"696e76616c6964206174746573746f72207369676e6174757265","kind":"string","nativeSrc":"6112:28:18","nodeType":"YulLiteral","src":"6112:28:18","type":"","value":"invalid attestor signature"}],"functionName":{"name":"mstore","nativeSrc":"6085:6:18","nodeType":"YulIdentifier","src":"6085:6:18"},"nativeSrc":"6085:56:18","nodeType":"YulFunctionCall","src":"6085:56:18"},"nativeSrc":"6085:56:18","nodeType":"YulExpressionStatement","src":"6085:56:18"},{"nativeSrc":"6150:26:18","nodeType":"YulAssignment","src":"6150:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"6162:9:18","nodeType":"YulIdentifier","src":"6162:9:18"},{"kind":"number","nativeSrc":"6173:2:18","nodeType":"YulLiteral","src":"6173:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6158:3:18","nodeType":"YulIdentifier","src":"6158:3:18"},"nativeSrc":"6158:18:18","nodeType":"YulFunctionCall","src":"6158:18:18"},"variableNames":[{"name":"tail","nativeSrc":"6150:4:18","nodeType":"YulIdentifier","src":"6150:4:18"}]}]},"name":"abi_encode_tuple_t_stringliteral_c347248987f70db0011250d554ae2fccfb8a4b603bfebf1c3d0af4f63efc2c60__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5832:350:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5983:9:18","nodeType":"YulTypedName","src":"5983:9:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5997:4:18","nodeType":"YulTypedName","src":"5997:4:18","type":""}],"src":"5832:350:18"},{"body":{"nativeSrc":"6344:188:18","nodeType":"YulBlock","src":"6344:188:18","statements":[{"nativeSrc":"6354:26:18","nodeType":"YulAssignment","src":"6354:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"6366:9:18","nodeType":"YulIdentifier","src":"6366:9:18"},{"kind":"number","nativeSrc":"6377:2:18","nodeType":"YulLiteral","src":"6377:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6362:3:18","nodeType":"YulIdentifier","src":"6362:3:18"},"nativeSrc":"6362:18:18","nodeType":"YulFunctionCall","src":"6362:18:18"},"variableNames":[{"name":"tail","nativeSrc":"6354:4:18","nodeType":"YulIdentifier","src":"6354:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6396:9:18","nodeType":"YulIdentifier","src":"6396:9:18"},{"arguments":[{"name":"value0","nativeSrc":"6411:6:18","nodeType":"YulIdentifier","src":"6411:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6427:3:18","nodeType":"YulLiteral","src":"6427:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"6432:1:18","nodeType":"YulLiteral","src":"6432:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6423:3:18","nodeType":"YulIdentifier","src":"6423:3:18"},"nativeSrc":"6423:11:18","nodeType":"YulFunctionCall","src":"6423:11:18"},{"kind":"number","nativeSrc":"6436:1:18","nodeType":"YulLiteral","src":"6436:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6419:3:18","nodeType":"YulIdentifier","src":"6419:3:18"},"nativeSrc":"6419:19:18","nodeType":"YulFunctionCall","src":"6419:19:18"}],"functionName":{"name":"and","nativeSrc":"6407:3:18","nodeType":"YulIdentifier","src":"6407:3:18"},"nativeSrc":"6407:32:18","nodeType":"YulFunctionCall","src":"6407:32:18"}],"functionName":{"name":"mstore","nativeSrc":"6389:6:18","nodeType":"YulIdentifier","src":"6389:6:18"},"nativeSrc":"6389:51:18","nodeType":"YulFunctionCall","src":"6389:51:18"},"nativeSrc":"6389:51:18","nodeType":"YulExpressionStatement","src":"6389:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6460:9:18","nodeType":"YulIdentifier","src":"6460:9:18"},{"kind":"number","nativeSrc":"6471:2:18","nodeType":"YulLiteral","src":"6471:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6456:3:18","nodeType":"YulIdentifier","src":"6456:3:18"},"nativeSrc":"6456:18:18","nodeType":"YulFunctionCall","src":"6456:18:18"},{"name":"value1","nativeSrc":"6476:6:18","nodeType":"YulIdentifier","src":"6476:6:18"}],"functionName":{"name":"mstore","nativeSrc":"6449:6:18","nodeType":"YulIdentifier","src":"6449:6:18"},"nativeSrc":"6449:34:18","nodeType":"YulFunctionCall","src":"6449:34:18"},"nativeSrc":"6449:34:18","nodeType":"YulExpressionStatement","src":"6449:34:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6503:9:18","nodeType":"YulIdentifier","src":"6503:9:18"},{"kind":"number","nativeSrc":"6514:2:18","nodeType":"YulLiteral","src":"6514:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6499:3:18","nodeType":"YulIdentifier","src":"6499:3:18"},"nativeSrc":"6499:18:18","nodeType":"YulFunctionCall","src":"6499:18:18"},{"name":"value2","nativeSrc":"6519:6:18","nodeType":"YulIdentifier","src":"6519:6:18"}],"functionName":{"name":"mstore","nativeSrc":"6492:6:18","nodeType":"YulIdentifier","src":"6492:6:18"},"nativeSrc":"6492:34:18","nodeType":"YulFunctionCall","src":"6492:34:18"},"nativeSrc":"6492:34:18","nodeType":"YulExpressionStatement","src":"6492:34:18"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"6187:345:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6297:9:18","nodeType":"YulTypedName","src":"6297:9:18","type":""},{"name":"value2","nativeSrc":"6308:6:18","nodeType":"YulTypedName","src":"6308:6:18","type":""},{"name":"value1","nativeSrc":"6316:6:18","nodeType":"YulTypedName","src":"6316:6:18","type":""},{"name":"value0","nativeSrc":"6324:6:18","nodeType":"YulTypedName","src":"6324:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6335:4:18","nodeType":"YulTypedName","src":"6335:4:18","type":""}],"src":"6187:345:18"},{"body":{"nativeSrc":"6638:102:18","nodeType":"YulBlock","src":"6638:102:18","statements":[{"nativeSrc":"6648:26:18","nodeType":"YulAssignment","src":"6648:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"6660:9:18","nodeType":"YulIdentifier","src":"6660:9:18"},{"kind":"number","nativeSrc":"6671:2:18","nodeType":"YulLiteral","src":"6671:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6656:3:18","nodeType":"YulIdentifier","src":"6656:3:18"},"nativeSrc":"6656:18:18","nodeType":"YulFunctionCall","src":"6656:18:18"},"variableNames":[{"name":"tail","nativeSrc":"6648:4:18","nodeType":"YulIdentifier","src":"6648:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6690:9:18","nodeType":"YulIdentifier","src":"6690:9:18"},{"arguments":[{"name":"value0","nativeSrc":"6705:6:18","nodeType":"YulIdentifier","src":"6705:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6721:3:18","nodeType":"YulLiteral","src":"6721:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"6726:1:18","nodeType":"YulLiteral","src":"6726:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6717:3:18","nodeType":"YulIdentifier","src":"6717:3:18"},"nativeSrc":"6717:11:18","nodeType":"YulFunctionCall","src":"6717:11:18"},{"kind":"number","nativeSrc":"6730:1:18","nodeType":"YulLiteral","src":"6730:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6713:3:18","nodeType":"YulIdentifier","src":"6713:3:18"},"nativeSrc":"6713:19:18","nodeType":"YulFunctionCall","src":"6713:19:18"}],"functionName":{"name":"and","nativeSrc":"6701:3:18","nodeType":"YulIdentifier","src":"6701:3:18"},"nativeSrc":"6701:32:18","nodeType":"YulFunctionCall","src":"6701:32:18"}],"functionName":{"name":"mstore","nativeSrc":"6683:6:18","nodeType":"YulIdentifier","src":"6683:6:18"},"nativeSrc":"6683:51:18","nodeType":"YulFunctionCall","src":"6683:51:18"},"nativeSrc":"6683:51:18","nodeType":"YulExpressionStatement","src":"6683:51:18"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"6537:203:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6607:9:18","nodeType":"YulTypedName","src":"6607:9:18","type":""},{"name":"value0","nativeSrc":"6618:6:18","nodeType":"YulTypedName","src":"6618:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6629:4:18","nodeType":"YulTypedName","src":"6629:4:18","type":""}],"src":"6537:203:18"},{"body":{"nativeSrc":"6958:306:18","nodeType":"YulBlock","src":"6958:306:18","statements":[{"nativeSrc":"6968:27:18","nodeType":"YulAssignment","src":"6968:27:18","value":{"arguments":[{"name":"headStart","nativeSrc":"6980:9:18","nodeType":"YulIdentifier","src":"6980:9:18"},{"kind":"number","nativeSrc":"6991:3:18","nodeType":"YulLiteral","src":"6991:3:18","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"6976:3:18","nodeType":"YulIdentifier","src":"6976:3:18"},"nativeSrc":"6976:19:18","nodeType":"YulFunctionCall","src":"6976:19:18"},"variableNames":[{"name":"tail","nativeSrc":"6968:4:18","nodeType":"YulIdentifier","src":"6968:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7011:9:18","nodeType":"YulIdentifier","src":"7011:9:18"},{"name":"value0","nativeSrc":"7022:6:18","nodeType":"YulIdentifier","src":"7022:6:18"}],"functionName":{"name":"mstore","nativeSrc":"7004:6:18","nodeType":"YulIdentifier","src":"7004:6:18"},"nativeSrc":"7004:25:18","nodeType":"YulFunctionCall","src":"7004:25:18"},"nativeSrc":"7004:25:18","nodeType":"YulExpressionStatement","src":"7004:25:18"},{"nativeSrc":"7038:29:18","nodeType":"YulVariableDeclaration","src":"7038:29:18","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7056:3:18","nodeType":"YulLiteral","src":"7056:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"7061:1:18","nodeType":"YulLiteral","src":"7061:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7052:3:18","nodeType":"YulIdentifier","src":"7052:3:18"},"nativeSrc":"7052:11:18","nodeType":"YulFunctionCall","src":"7052:11:18"},{"kind":"number","nativeSrc":"7065:1:18","nodeType":"YulLiteral","src":"7065:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7048:3:18","nodeType":"YulIdentifier","src":"7048:3:18"},"nativeSrc":"7048:19:18","nodeType":"YulFunctionCall","src":"7048:19:18"},"variables":[{"name":"_1","nativeSrc":"7042:2:18","nodeType":"YulTypedName","src":"7042:2:18","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7087:9:18","nodeType":"YulIdentifier","src":"7087:9:18"},{"kind":"number","nativeSrc":"7098:2:18","nodeType":"YulLiteral","src":"7098:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7083:3:18","nodeType":"YulIdentifier","src":"7083:3:18"},"nativeSrc":"7083:18:18","nodeType":"YulFunctionCall","src":"7083:18:18"},{"arguments":[{"name":"value1","nativeSrc":"7107:6:18","nodeType":"YulIdentifier","src":"7107:6:18"},{"name":"_1","nativeSrc":"7115:2:18","nodeType":"YulIdentifier","src":"7115:2:18"}],"functionName":{"name":"and","nativeSrc":"7103:3:18","nodeType":"YulIdentifier","src":"7103:3:18"},"nativeSrc":"7103:15:18","nodeType":"YulFunctionCall","src":"7103:15:18"}],"functionName":{"name":"mstore","nativeSrc":"7076:6:18","nodeType":"YulIdentifier","src":"7076:6:18"},"nativeSrc":"7076:43:18","nodeType":"YulFunctionCall","src":"7076:43:18"},"nativeSrc":"7076:43:18","nodeType":"YulExpressionStatement","src":"7076:43:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7139:9:18","nodeType":"YulIdentifier","src":"7139:9:18"},{"kind":"number","nativeSrc":"7150:2:18","nodeType":"YulLiteral","src":"7150:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7135:3:18","nodeType":"YulIdentifier","src":"7135:3:18"},"nativeSrc":"7135:18:18","nodeType":"YulFunctionCall","src":"7135:18:18"},{"arguments":[{"name":"value2","nativeSrc":"7159:6:18","nodeType":"YulIdentifier","src":"7159:6:18"},{"name":"_1","nativeSrc":"7167:2:18","nodeType":"YulIdentifier","src":"7167:2:18"}],"functionName":{"name":"and","nativeSrc":"7155:3:18","nodeType":"YulIdentifier","src":"7155:3:18"},"nativeSrc":"7155:15:18","nodeType":"YulFunctionCall","src":"7155:15:18"}],"functionName":{"name":"mstore","nativeSrc":"7128:6:18","nodeType":"YulIdentifier","src":"7128:6:18"},"nativeSrc":"7128:43:18","nodeType":"YulFunctionCall","src":"7128:43:18"},"nativeSrc":"7128:43:18","nodeType":"YulExpressionStatement","src":"7128:43:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7191:9:18","nodeType":"YulIdentifier","src":"7191:9:18"},{"kind":"number","nativeSrc":"7202:2:18","nodeType":"YulLiteral","src":"7202:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7187:3:18","nodeType":"YulIdentifier","src":"7187:3:18"},"nativeSrc":"7187:18:18","nodeType":"YulFunctionCall","src":"7187:18:18"},{"name":"value3","nativeSrc":"7207:6:18","nodeType":"YulIdentifier","src":"7207:6:18"}],"functionName":{"name":"mstore","nativeSrc":"7180:6:18","nodeType":"YulIdentifier","src":"7180:6:18"},"nativeSrc":"7180:34:18","nodeType":"YulFunctionCall","src":"7180:34:18"},"nativeSrc":"7180:34:18","nodeType":"YulExpressionStatement","src":"7180:34:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7234:9:18","nodeType":"YulIdentifier","src":"7234:9:18"},{"kind":"number","nativeSrc":"7245:3:18","nodeType":"YulLiteral","src":"7245:3:18","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"7230:3:18","nodeType":"YulIdentifier","src":"7230:3:18"},"nativeSrc":"7230:19:18","nodeType":"YulFunctionCall","src":"7230:19:18"},{"name":"value4","nativeSrc":"7251:6:18","nodeType":"YulIdentifier","src":"7251:6:18"}],"functionName":{"name":"mstore","nativeSrc":"7223:6:18","nodeType":"YulIdentifier","src":"7223:6:18"},"nativeSrc":"7223:35:18","nodeType":"YulFunctionCall","src":"7223:35:18"},"nativeSrc":"7223:35:18","nodeType":"YulExpressionStatement","src":"7223:35:18"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_address_t_uint256_t_bytes32__to_t_uint256_t_address_t_address_t_uint256_t_bytes32__fromStack_reversed","nativeSrc":"6745:519:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6895:9:18","nodeType":"YulTypedName","src":"6895:9:18","type":""},{"name":"value4","nativeSrc":"6906:6:18","nodeType":"YulTypedName","src":"6906:6:18","type":""},{"name":"value3","nativeSrc":"6914:6:18","nodeType":"YulTypedName","src":"6914:6:18","type":""},{"name":"value2","nativeSrc":"6922:6:18","nodeType":"YulTypedName","src":"6922:6:18","type":""},{"name":"value1","nativeSrc":"6930:6:18","nodeType":"YulTypedName","src":"6930:6:18","type":""},{"name":"value0","nativeSrc":"6938:6:18","nodeType":"YulTypedName","src":"6938:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6949:4:18","nodeType":"YulTypedName","src":"6949:4:18","type":""}],"src":"6745:519:18"},{"body":{"nativeSrc":"7317:174:18","nodeType":"YulBlock","src":"7317:174:18","statements":[{"nativeSrc":"7327:16:18","nodeType":"YulAssignment","src":"7327:16:18","value":{"arguments":[{"name":"x","nativeSrc":"7338:1:18","nodeType":"YulIdentifier","src":"7338:1:18"},{"name":"y","nativeSrc":"7341:1:18","nodeType":"YulIdentifier","src":"7341:1:18"}],"functionName":{"name":"add","nativeSrc":"7334:3:18","nodeType":"YulIdentifier","src":"7334:3:18"},"nativeSrc":"7334:9:18","nodeType":"YulFunctionCall","src":"7334:9:18"},"variableNames":[{"name":"sum","nativeSrc":"7327:3:18","nodeType":"YulIdentifier","src":"7327:3:18"}]},{"body":{"nativeSrc":"7374:111:18","nodeType":"YulBlock","src":"7374:111:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7395:1:18","nodeType":"YulLiteral","src":"7395:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"7402:3:18","nodeType":"YulLiteral","src":"7402:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"7407:10:18","nodeType":"YulLiteral","src":"7407:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"7398:3:18","nodeType":"YulIdentifier","src":"7398:3:18"},"nativeSrc":"7398:20:18","nodeType":"YulFunctionCall","src":"7398:20:18"}],"functionName":{"name":"mstore","nativeSrc":"7388:6:18","nodeType":"YulIdentifier","src":"7388:6:18"},"nativeSrc":"7388:31:18","nodeType":"YulFunctionCall","src":"7388:31:18"},"nativeSrc":"7388:31:18","nodeType":"YulExpressionStatement","src":"7388:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7439:1:18","nodeType":"YulLiteral","src":"7439:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"7442:4:18","nodeType":"YulLiteral","src":"7442:4:18","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"7432:6:18","nodeType":"YulIdentifier","src":"7432:6:18"},"nativeSrc":"7432:15:18","nodeType":"YulFunctionCall","src":"7432:15:18"},"nativeSrc":"7432:15:18","nodeType":"YulExpressionStatement","src":"7432:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7467:1:18","nodeType":"YulLiteral","src":"7467:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"7470:4:18","nodeType":"YulLiteral","src":"7470:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"7460:6:18","nodeType":"YulIdentifier","src":"7460:6:18"},"nativeSrc":"7460:15:18","nodeType":"YulFunctionCall","src":"7460:15:18"},"nativeSrc":"7460:15:18","nodeType":"YulExpressionStatement","src":"7460:15:18"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"7358:1:18","nodeType":"YulIdentifier","src":"7358:1:18"},{"name":"sum","nativeSrc":"7361:3:18","nodeType":"YulIdentifier","src":"7361:3:18"}],"functionName":{"name":"gt","nativeSrc":"7355:2:18","nodeType":"YulIdentifier","src":"7355:2:18"},"nativeSrc":"7355:10:18","nodeType":"YulFunctionCall","src":"7355:10:18"},"nativeSrc":"7352:133:18","nodeType":"YulIf","src":"7352:133:18"}]},"name":"checked_add_t_uint256","nativeSrc":"7269:222:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"7300:1:18","nodeType":"YulTypedName","src":"7300:1:18","type":""},{"name":"y","nativeSrc":"7303:1:18","nodeType":"YulTypedName","src":"7303:1:18","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"7309:3:18","nodeType":"YulTypedName","src":"7309:3:18","type":""}],"src":"7269:222:18"},{"body":{"nativeSrc":"7625:145:18","nodeType":"YulBlock","src":"7625:145:18","statements":[{"nativeSrc":"7635:26:18","nodeType":"YulAssignment","src":"7635:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"7647:9:18","nodeType":"YulIdentifier","src":"7647:9:18"},{"kind":"number","nativeSrc":"7658:2:18","nodeType":"YulLiteral","src":"7658:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7643:3:18","nodeType":"YulIdentifier","src":"7643:3:18"},"nativeSrc":"7643:18:18","nodeType":"YulFunctionCall","src":"7643:18:18"},"variableNames":[{"name":"tail","nativeSrc":"7635:4:18","nodeType":"YulIdentifier","src":"7635:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7677:9:18","nodeType":"YulIdentifier","src":"7677:9:18"},{"arguments":[{"name":"value0","nativeSrc":"7692:6:18","nodeType":"YulIdentifier","src":"7692:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7708:3:18","nodeType":"YulLiteral","src":"7708:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"7713:1:18","nodeType":"YulLiteral","src":"7713:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7704:3:18","nodeType":"YulIdentifier","src":"7704:3:18"},"nativeSrc":"7704:11:18","nodeType":"YulFunctionCall","src":"7704:11:18"},{"kind":"number","nativeSrc":"7717:1:18","nodeType":"YulLiteral","src":"7717:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7700:3:18","nodeType":"YulIdentifier","src":"7700:3:18"},"nativeSrc":"7700:19:18","nodeType":"YulFunctionCall","src":"7700:19:18"}],"functionName":{"name":"and","nativeSrc":"7688:3:18","nodeType":"YulIdentifier","src":"7688:3:18"},"nativeSrc":"7688:32:18","nodeType":"YulFunctionCall","src":"7688:32:18"}],"functionName":{"name":"mstore","nativeSrc":"7670:6:18","nodeType":"YulIdentifier","src":"7670:6:18"},"nativeSrc":"7670:51:18","nodeType":"YulFunctionCall","src":"7670:51:18"},"nativeSrc":"7670:51:18","nodeType":"YulExpressionStatement","src":"7670:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7741:9:18","nodeType":"YulIdentifier","src":"7741:9:18"},{"kind":"number","nativeSrc":"7752:2:18","nodeType":"YulLiteral","src":"7752:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7737:3:18","nodeType":"YulIdentifier","src":"7737:3:18"},"nativeSrc":"7737:18:18","nodeType":"YulFunctionCall","src":"7737:18:18"},{"name":"value1","nativeSrc":"7757:6:18","nodeType":"YulIdentifier","src":"7757:6:18"}],"functionName":{"name":"mstore","nativeSrc":"7730:6:18","nodeType":"YulIdentifier","src":"7730:6:18"},"nativeSrc":"7730:34:18","nodeType":"YulFunctionCall","src":"7730:34:18"},"nativeSrc":"7730:34:18","nodeType":"YulExpressionStatement","src":"7730:34:18"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"7496:274:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7586:9:18","nodeType":"YulTypedName","src":"7586:9:18","type":""},{"name":"value1","nativeSrc":"7597:6:18","nodeType":"YulTypedName","src":"7597:6:18","type":""},{"name":"value0","nativeSrc":"7605:6:18","nodeType":"YulTypedName","src":"7605:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7616:4:18","nodeType":"YulTypedName","src":"7616:4:18","type":""}],"src":"7496:274:18"},{"body":{"nativeSrc":"7807:95:18","nodeType":"YulBlock","src":"7807:95:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7824:1:18","nodeType":"YulLiteral","src":"7824:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"7831:3:18","nodeType":"YulLiteral","src":"7831:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"7836:10:18","nodeType":"YulLiteral","src":"7836:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"7827:3:18","nodeType":"YulIdentifier","src":"7827:3:18"},"nativeSrc":"7827:20:18","nodeType":"YulFunctionCall","src":"7827:20:18"}],"functionName":{"name":"mstore","nativeSrc":"7817:6:18","nodeType":"YulIdentifier","src":"7817:6:18"},"nativeSrc":"7817:31:18","nodeType":"YulFunctionCall","src":"7817:31:18"},"nativeSrc":"7817:31:18","nodeType":"YulExpressionStatement","src":"7817:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7864:1:18","nodeType":"YulLiteral","src":"7864:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"7867:4:18","nodeType":"YulLiteral","src":"7867:4:18","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"7857:6:18","nodeType":"YulIdentifier","src":"7857:6:18"},"nativeSrc":"7857:15:18","nodeType":"YulFunctionCall","src":"7857:15:18"},"nativeSrc":"7857:15:18","nodeType":"YulExpressionStatement","src":"7857:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7888:1:18","nodeType":"YulLiteral","src":"7888:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"7891:4:18","nodeType":"YulLiteral","src":"7891:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"7881:6:18","nodeType":"YulIdentifier","src":"7881:6:18"},"nativeSrc":"7881:15:18","nodeType":"YulFunctionCall","src":"7881:15:18"},"nativeSrc":"7881:15:18","nodeType":"YulExpressionStatement","src":"7881:15:18"}]},"name":"panic_error_0x21","nativeSrc":"7775:127:18","nodeType":"YulFunctionDefinition","src":"7775:127:18"},{"body":{"nativeSrc":"8088:217:18","nodeType":"YulBlock","src":"8088:217:18","statements":[{"nativeSrc":"8098:27:18","nodeType":"YulAssignment","src":"8098:27:18","value":{"arguments":[{"name":"headStart","nativeSrc":"8110:9:18","nodeType":"YulIdentifier","src":"8110:9:18"},{"kind":"number","nativeSrc":"8121:3:18","nodeType":"YulLiteral","src":"8121:3:18","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"8106:3:18","nodeType":"YulIdentifier","src":"8106:3:18"},"nativeSrc":"8106:19:18","nodeType":"YulFunctionCall","src":"8106:19:18"},"variableNames":[{"name":"tail","nativeSrc":"8098:4:18","nodeType":"YulIdentifier","src":"8098:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8141:9:18","nodeType":"YulIdentifier","src":"8141:9:18"},{"name":"value0","nativeSrc":"8152:6:18","nodeType":"YulIdentifier","src":"8152:6:18"}],"functionName":{"name":"mstore","nativeSrc":"8134:6:18","nodeType":"YulIdentifier","src":"8134:6:18"},"nativeSrc":"8134:25:18","nodeType":"YulFunctionCall","src":"8134:25:18"},"nativeSrc":"8134:25:18","nodeType":"YulExpressionStatement","src":"8134:25:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8179:9:18","nodeType":"YulIdentifier","src":"8179:9:18"},{"kind":"number","nativeSrc":"8190:2:18","nodeType":"YulLiteral","src":"8190:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8175:3:18","nodeType":"YulIdentifier","src":"8175:3:18"},"nativeSrc":"8175:18:18","nodeType":"YulFunctionCall","src":"8175:18:18"},{"arguments":[{"name":"value1","nativeSrc":"8199:6:18","nodeType":"YulIdentifier","src":"8199:6:18"},{"kind":"number","nativeSrc":"8207:4:18","nodeType":"YulLiteral","src":"8207:4:18","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"8195:3:18","nodeType":"YulIdentifier","src":"8195:3:18"},"nativeSrc":"8195:17:18","nodeType":"YulFunctionCall","src":"8195:17:18"}],"functionName":{"name":"mstore","nativeSrc":"8168:6:18","nodeType":"YulIdentifier","src":"8168:6:18"},"nativeSrc":"8168:45:18","nodeType":"YulFunctionCall","src":"8168:45:18"},"nativeSrc":"8168:45:18","nodeType":"YulExpressionStatement","src":"8168:45:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8233:9:18","nodeType":"YulIdentifier","src":"8233:9:18"},{"kind":"number","nativeSrc":"8244:2:18","nodeType":"YulLiteral","src":"8244:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8229:3:18","nodeType":"YulIdentifier","src":"8229:3:18"},"nativeSrc":"8229:18:18","nodeType":"YulFunctionCall","src":"8229:18:18"},{"name":"value2","nativeSrc":"8249:6:18","nodeType":"YulIdentifier","src":"8249:6:18"}],"functionName":{"name":"mstore","nativeSrc":"8222:6:18","nodeType":"YulIdentifier","src":"8222:6:18"},"nativeSrc":"8222:34:18","nodeType":"YulFunctionCall","src":"8222:34:18"},"nativeSrc":"8222:34:18","nodeType":"YulExpressionStatement","src":"8222:34:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8276:9:18","nodeType":"YulIdentifier","src":"8276:9:18"},{"kind":"number","nativeSrc":"8287:2:18","nodeType":"YulLiteral","src":"8287:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8272:3:18","nodeType":"YulIdentifier","src":"8272:3:18"},"nativeSrc":"8272:18:18","nodeType":"YulFunctionCall","src":"8272:18:18"},{"name":"value3","nativeSrc":"8292:6:18","nodeType":"YulIdentifier","src":"8292:6:18"}],"functionName":{"name":"mstore","nativeSrc":"8265:6:18","nodeType":"YulIdentifier","src":"8265:6:18"},"nativeSrc":"8265:34:18","nodeType":"YulFunctionCall","src":"8265:34:18"},"nativeSrc":"8265:34:18","nodeType":"YulExpressionStatement","src":"8265:34:18"}]},"name":"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed","nativeSrc":"7907:398:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8033:9:18","nodeType":"YulTypedName","src":"8033:9:18","type":""},{"name":"value3","nativeSrc":"8044:6:18","nodeType":"YulTypedName","src":"8044:6:18","type":""},{"name":"value2","nativeSrc":"8052:6:18","nodeType":"YulTypedName","src":"8052:6:18","type":""},{"name":"value1","nativeSrc":"8060:6:18","nodeType":"YulTypedName","src":"8060:6:18","type":""},{"name":"value0","nativeSrc":"8068:6:18","nodeType":"YulTypedName","src":"8068:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8079:4:18","nodeType":"YulTypedName","src":"8079:4:18","type":""}],"src":"7907:398:18"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_uint256t_bytes32(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 16)\n mstore(add(headStart, 64), \"invalid provider\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_71f86cf417ff59fbe7c0fe4d47bc3a27555955742eedee4393c55e5ebd9347cc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 13)\n mstore(add(headStart, 64), \"invalid units\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_aa5e8e776638b05fbc051ae185efa3102982bf1d06944b75bb2872751226b5c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"receipt already consumed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c347248987f70db0011250d554ae2fccfb8a4b603bfebf1c3d0af4f63efc2c60__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 26)\n mstore(add(headStart, 64), \"invalid attestor signature\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_uint256_t_address_t_address_t_uint256_t_bytes32__to_t_uint256_t_address_t_address_t_uint256_t_bytes32__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n let _1 := sub(shl(160, 1), 1)\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n}","id":18,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c806336568abe116100b857806395d89b411161007c57806395d89b41146102bb578063a217fddf146102c3578063a9059cbb146102cb578063d547741f146102de578063dd62ed3e146102f1578063e0e27fa71461032a57600080fd5b806336568abe1461021e57806362723644146102315780636b366cb51461025857806370a082311461027f57806391d14854146102a857600080fd5b8063248a9ca3116100ff578063248a9ca3146101b1578063272a7b79146101d45780632f2ff15d146101e7578063313ce567146101fc578063336c739c1461020b57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd1461019e575b600080fd5b61014f61014a366004610e77565b61034d565b60405190151581526020015b60405180910390f35b61016c610384565b60405161015b9190610ea8565b61014f610187366004610f13565b610416565b6002545b60405190815260200161015b565b61014f6101ac366004610f3d565b61042e565b6101906101bf366004610f79565b60009081526005602052604090206001015490565b6101906101e2366004610f92565b610452565b6101fa6101f5366004610fc5565b610467565b005b6040516012815260200161015b565b6101fa610219366004610ff1565b610492565b6101fa61022c366004610fc5565b6106ef565b6101907fa7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e481565b6101907f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc81565b61019061028d366004611085565b6001600160a01b031660009081526020819052604090205490565b61014f6102b6366004610fc5565b610727565b61016c610752565b610190600081565b61014f6102d9366004610f13565b610761565b6101fa6102ec366004610fc5565b61076f565b6101906102ff3660046110a0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61014f610338366004610f79565b60066020526000908152604090205460ff1681565b60006001600160e01b03198216637965db0b60e01b148061037e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060038054610393906110ca565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906110ca565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b5050505050905090565b600033610424818585610794565b5060019392505050565b60003361043c8582856107a1565b61044785858561081a565b506001949350505050565b600061045f848484610879565b949350505050565b600082815260056020526040902060010154610482816108f8565b61048c8383610905565b50505050565b7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc6104bc816108f8565b6001600160a01b03861661050a5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b210383937bb34b232b960811b60448201526064015b60405180910390fd5b6000851161054a5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420756e69747360981b6044820152606401610501565b60008481526006602052604090205460ff16156105a95760405162461bcd60e51b815260206004820152601860248201527f7265636569707420616c726561647920636f6e73756d656400000000000000006044820152606401610501565b60006105b6878787610879565b905060006105fc85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506109999050565b90506106287fa7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e482610727565b6106745760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964206174746573746f72207369676e61747572650000000000006044820152606401610501565b6000868152600660205260409020805460ff1916600117905561069788886109c3565b806001600160a01b0316886001600160a01b0316877f62bdd9e89a55dce0e95b0356eac19c65ef5afdd870381a93e270dcd072f13f028a6040516106dd91815260200190565b60405180910390a45050505050505050565b6001600160a01b03811633146107185760405163334bd91960e11b815260040160405180910390fd5b61072282826109fd565b505050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060048054610393906110ca565b60003361042481858561081a565b60008281526005602052604090206001015461078a816108f8565b61048c83836109fd565b6107228383836001610a6a565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981101561048c578181101561080b57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610501565b61048c84848484036000610a6a565b6001600160a01b03831661084457604051634b637e8f60e11b815260006004820152602401610501565b6001600160a01b03821661086e5760405163ec442f0560e01b815260006004820152602401610501565b610722838383610b3f565b604080514660208083019190915230828401526001600160a01b03959095166060820152608081019390935260a0808401929092528051808403909201825260c090920190915280519101207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b6109028133610c69565b50565b60006109118383610727565b6109915760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556109493390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161037e565b50600061037e565b6000806000806109a98686610ca2565b9250925092506109b98282610cef565b5090949350505050565b6001600160a01b0382166109ed5760405163ec442f0560e01b815260006004820152602401610501565b6109f960008383610b3f565b5050565b6000610a098383610727565b156109915760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161037e565b6001600160a01b038416610a945760405163e602df0560e01b815260006004820152602401610501565b6001600160a01b038316610abe57604051634a1406b160e11b815260006004820152602401610501565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3191815260200190565b60405180910390a350505050565b6001600160a01b038316610b6a578060026000828254610b5f9190611104565b90915550610bdc9050565b6001600160a01b03831660009081526020819052604090205481811015610bbd5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610501565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610bf857600280548290039055610c17565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c5c91815260200190565b60405180910390a3505050565b610c738282610727565b6109f95760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610501565b60008060008351604103610cdc5760208401516040850151606086015160001a610cce88828585610da8565b955095509550505050610ce8565b50508151600091506002905b9250925092565b6000826003811115610d0357610d03611125565b03610d0c575050565b6001826003811115610d2057610d20611125565b03610d3e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d5257610d52611125565b03610d735760405163fce698f760e01b815260048101829052602401610501565b6003826003811115610d8757610d87611125565b036109f9576040516335e2f38360e21b815260048101829052602401610501565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610de35750600091506003905082610e6d565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610e37573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e6357506000925060019150829050610e6d565b9250600091508190505b9450945094915050565b600060208284031215610e8957600080fd5b81356001600160e01b031981168114610ea157600080fd5b9392505050565b60006020808352835180602085015260005b81811015610ed657858101830151858201604001528201610eba565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610f0e57600080fd5b919050565b60008060408385031215610f2657600080fd5b610f2f83610ef7565b946020939093013593505050565b600080600060608486031215610f5257600080fd5b610f5b84610ef7565b9250610f6960208501610ef7565b9150604084013590509250925092565b600060208284031215610f8b57600080fd5b5035919050565b600080600060608486031215610fa757600080fd5b610fb084610ef7565b95602085013595506040909401359392505050565b60008060408385031215610fd857600080fd5b82359150610fe860208401610ef7565b90509250929050565b60008060008060006080868803121561100957600080fd5b61101286610ef7565b94506020860135935060408601359250606086013567ffffffffffffffff8082111561103d57600080fd5b818801915088601f83011261105157600080fd5b81358181111561106057600080fd5b89602082850101111561107257600080fd5b9699959850939650602001949392505050565b60006020828403121561109757600080fd5b610ea182610ef7565b600080604083850312156110b357600080fd5b6110bc83610ef7565b9150610fe860208401610ef7565b600181811c908216806110de57607f821691505b6020821081036110fe57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561037e57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220ccbff0a677379c90c9003ba37fbc7f7e7ecff7adecf992224d7bf2788e4cfc4b64736f6c63430008180033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36568ABE GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0xE0E27FA7 EQ PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x62723644 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x6B366CB5 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x272A7B79 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x336C739C EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x19E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xE77 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH2 0x384 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0xF13 JUMP JUMPDEST PUSH2 0x416 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xF3D JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST PUSH2 0x190 PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x467 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x492 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x6EF JUMP JUMPDEST PUSH2 0x190 PUSH32 0xA7E0CD0F2772B23EE4C329892293A6BD99D48C306B094D6D008C9A8BB8B731E4 DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x28D CALLDATASIZE PUSH1 0x4 PUSH2 0x1085 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x2B6 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x752 JUMP JUMPDEST PUSH2 0x190 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0xF13 JUMP JUMPDEST PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x2EC CALLDATASIZE PUSH1 0x4 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x76F JUMP JUMPDEST PUSH2 0x190 PUSH2 0x2FF CALLDATASIZE PUSH1 0x4 PUSH2 0x10A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x37E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x393 SWAP1 PUSH2 0x10CA JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3BF SWAP1 PUSH2 0x10CA JUMP JUMPDEST DUP1 ISZERO PUSH2 0x40C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x40C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x424 DUP2 DUP6 DUP6 PUSH2 0x794 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x43C DUP6 DUP3 DUP6 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x447 DUP6 DUP6 DUP6 PUSH2 0x81A JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45F DUP5 DUP5 DUP5 PUSH2 0x879 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x482 DUP2 PUSH2 0x8F8 JUMP JUMPDEST PUSH2 0x48C DUP4 DUP4 PUSH2 0x905 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC PUSH2 0x4BC DUP2 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x50A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B210383937BB34B232B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x54A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x696E76616C696420756E697473 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569707420616C726561647920636F6E73756D65640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B6 DUP8 DUP8 DUP8 PUSH2 0x879 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5FC DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH2 0x999 SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x628 PUSH32 0xA7E0CD0F2772B23EE4C329892293A6BD99D48C306B094D6D008C9A8BB8B731E4 DUP3 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x674 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C6964206174746573746F72207369676E6174757265000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x697 DUP9 DUP9 PUSH2 0x9C3 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH32 0x62BDD9E89A55DCE0E95B0356EAC19C65EF5AFDD870381A93E270DCD072F13F02 DUP11 PUSH1 0x40 MLOAD PUSH2 0x6DD SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x718 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x722 DUP3 DUP3 PUSH2 0x9FD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x393 SWAP1 PUSH2 0x10CA JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x424 DUP2 DUP6 DUP6 PUSH2 0x81A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x78A DUP2 PUSH2 0x8F8 JUMP JUMPDEST PUSH2 0x48C DUP4 DUP4 PUSH2 0x9FD JUMP JUMPDEST PUSH2 0x722 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xA6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x48C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x80B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH2 0x48C DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0xA6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x844 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH2 0x722 DUP4 DUP4 DUP4 PUSH2 0xB3F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CHAINID PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP3 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP5 SUB SWAP1 SWAP3 ADD DUP3 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3C SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x902 DUP2 CALLER PUSH2 0xC69 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x911 DUP4 DUP4 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x991 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x949 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x9A9 DUP7 DUP7 PUSH2 0xCA2 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x9B9 DUP3 DUP3 PUSH2 0xCEF JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9ED JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH2 0x9F9 PUSH1 0x0 DUP4 DUP4 PUSH2 0xB3F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP4 DUP4 PUSH2 0x727 JUMP JUMPDEST ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xABE JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x48C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB31 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB6A JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB5F SWAP2 SWAP1 PUSH2 0x1104 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0xBDC SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xBBD JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBF8 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC5C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xC73 DUP3 DUP3 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0xCDC JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0xCCE DUP9 DUP3 DUP6 DUP6 PUSH2 0xDA8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0xCE8 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD03 JUMPI PUSH2 0xD03 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0xD0C JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD20 JUMPI PUSH2 0xD20 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0xD3E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD52 JUMPI PUSH2 0xD52 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0xD73 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xD87 JUMPI PUSH2 0xD87 PUSH2 0x1125 JUMP JUMPDEST SUB PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x501 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0xDE3 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0xE6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE37 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE63 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0xE6D JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xED6 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xEBA JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2F DUP4 PUSH2 0xEF7 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF5B DUP5 PUSH2 0xEF7 JUMP JUMPDEST SWAP3 POP PUSH2 0xF69 PUSH1 0x20 DUP6 ADD PUSH2 0xEF7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFB0 DUP5 PUSH2 0xEF7 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xFE8 PUSH1 0x20 DUP5 ADD PUSH2 0xEF7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1012 DUP7 PUSH2 0xEF7 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1060 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEA1 DUP3 PUSH2 0xEF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10BC DUP4 PUSH2 0xEF7 JUMP JUMPDEST SWAP2 POP PUSH2 0xFE8 PUSH1 0x20 DUP5 ADD PUSH2 0xEF7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10DE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x10FE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x37E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0xBF CREATE 0xA6 PUSH24 0x379C90C9003BA37FBC7F7E7ECFF7ADECF992224D7BF2788E 0x4C 0xFC 0x4B PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"491:2252:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:202:0;;;;;;:::i;:::-;;:::i;:::-;;;470:14:18;;463:22;445:41;;433:2;418:18;2541:202:0;;;;;;;;1760:89:3;;;:::i;:::-;;;;;;;:::i;3902:186::-;;;;;;:::i;:::-;;:::i;2803:97::-;2881:12;;2803:97;;;1633:25:18;;;1621:2;1606:18;2803:97:3;1487:177:18;4680:244:3;;;;;;:::i;:::-;;:::i;3786:120:0:-;;;;;;:::i;:::-;3851:7;3877:12;;;:6;:12;;;;;:22;;;;3786:120;2286:171:16;;;;;;:::i;:::-;;:::i;4202:136:0:-;;;;;;:::i;:::-;;:::i;:::-;;2688:82:3;;;2761:2;3097:36:18;;3085:2;3070:18;2688:82:3;2955:184:18;1484:723:16;;;;;;:::i;:::-;;:::i;5304:245:0:-;;;;;;:::i;:::-;;:::i;686:66:16:-;;726:26;686:66;;608:72;;651:29;608:72;;2933:116:3;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:3;2998:7;3024:18;;;;;;;;;;;;2933:116;2830:136:0;;;;;;:::i;:::-;;:::i;1962:93:3:-;;;:::i;2196:49:0:-;;2241:4;2196:49;;3244:178:3;;;;;;:::i;:::-;;:::i;4618:138:0:-;;;;;;:::i;:::-;;:::i;3455:140:3:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:3;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;824:48:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2541:202:0;2626:4;-1:-1:-1;;;;;;2649:47:0;;-1:-1:-1;;;2649:47:0;;:87;;-1:-1:-1;;;;;;;;;;829:40:11;;;2700:36:0;2642:94;2541:202;-1:-1:-1;;2541:202:0:o;1760:89:3:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;735:10:6;4029:31:3;735:10:6;4045:7:3;4054:5;4029:8;:31::i;:::-;-1:-1:-1;4077:4:3;;3902:186;-1:-1:-1;;;3902:186:3:o;4680:244::-;4767:4;735:10:6;4823:37:3;4839:4;735:10:6;4854:5:3;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;-1:-1:-1;4913:4:3;;4680:244;-1:-1:-1;;;;4680:244:3:o;2286:171:16:-;2383:7;2409:41;2421:8;2431:5;2438:11;2409;:41::i;:::-;2402:48;2286:171;-1:-1:-1;;;;2286:171:16:o;4202:136:0:-;3851:7;3877:12;;;:6;:12;;;;;:22;;;2473:16;2484:4;2473:10;:16::i;:::-;4306:25:::1;4317:4;4323:7;4306:10;:25::i;:::-;;4202:136:::0;;;:::o;1484:723:16:-;651:29;2473:16:0;2484:4;2473:10;:16::i;:::-;-1:-1:-1;;;;;1681:22:16;::::1;1673:51;;;::::0;-1:-1:-1;;;1673:51:16;;4994:2:18;1673:51:16::1;::::0;::::1;4976:21:18::0;5033:2;5013:18;;;5006:30;-1:-1:-1;;;5052:18:18;;;5045:46;5108:18;;1673:51:16::1;;;;;;;;;1750:1;1742:5;:9;1734:35;;;::::0;-1:-1:-1;;;1734:35:16;;5339:2:18;1734:35:16::1;::::0;::::1;5321:21:18::0;5378:2;5358:18;;;5351:30;-1:-1:-1;;;5397:18:18;;;5390:43;5450:18;;1734:35:16::1;5137:337:18::0;1734:35:16::1;1788:29;::::0;;;:16:::1;:29;::::0;;;;;::::1;;1787:30;1779:67;;;::::0;-1:-1:-1;;;1779:67:16;;5681:2:18;1779:67:16::1;::::0;::::1;5663:21:18::0;5720:2;5700:18;;;5693:30;5759:26;5739:18;;;5732:54;5803:18;;1779:67:16::1;5479:348:18::0;1779:67:16::1;1857:14;1874:41;1886:8;1896:5;1903:11;1874;:41::i;:::-;1857:58;;1925:16;1944:25;1959:9;;1944:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1944:6:16;;:25;-1:-1:-1;;1944:14:16::1;:25:::0;-1:-1:-1;1944:25:16:i:1;:::-;1925:44;;1987:32;726:26;2010:8;1987:7;:32::i;:::-;1979:71;;;::::0;-1:-1:-1;;;1979:71:16;;6034:2:18;1979:71:16::1;::::0;::::1;6016:21:18::0;6073:2;6053:18;;;6046:30;6112:28;6092:18;;;6085:56;6158:18;;1979:71:16::1;5832:350:18::0;1979:71:16::1;2061:29;::::0;;;:16:::1;:29;::::0;;;;:36;;-1:-1:-1;;2061:36:16::1;2093:4;2061:36;::::0;;2107:22:::1;2113:8:::0;2123:5;2107::::1;:22::i;:::-;2191:8;-1:-1:-1::0;;;;;2145:55:16::1;2174:8;-1:-1:-1::0;;;;;2145:55:16::1;2161:11;2145:55;2184:5;2145:55;;;;1633:25:18::0;;1621:2;1606:18;;1487:177;2145:55:16::1;;;;;;;;1663:544;;1484:723:::0;;;;;;:::o;5304:245:0:-;-1:-1:-1;;;;;5397:34:0;;735:10:6;5397:34:0;5393:102;;5454:30;;-1:-1:-1;;;5454:30:0;;;;;;;;;;;5393:102;5505:37;5517:4;5523:18;5505:11;:37::i;:::-;;5304:245;;:::o;2830:136::-;2907:4;2930:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2930:29:0;;;;;;;;;;;;;;;2830:136::o;1962:93:3:-;2009:13;2041:7;2034:14;;;;;:::i;3244:178::-;3313:4;735:10:6;3367:27:3;735:10:6;3384:2:3;3388:5;3367:9;:27::i;4618:138:0:-;3851:7;3877:12;;;:6;:12;;;;;:22;;;2473:16;2484:4;2473:10;:16::i;:::-;4723:26:::1;4735:4;4741:7;4723:11;:26::i;8630:128:3:-:0;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;10319:476::-;-1:-1:-1;;;;;3561:18:3;;;10418:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10484:36:3;;10480:309;;;10559:5;10540:16;:24;10536:130;;;10591:60;;-1:-1:-1;;;10591:60:3;;-1:-1:-1;;;;;6407:32:18;;10591:60:3;;;6389:51:18;6456:18;;;6449:34;;;6499:18;;;6492:34;;;6362:18;;10591:60:3;6187:345:18;10536:130:3;10707:57;10716:5;10723:7;10751:5;10732:16;:24;10758:5;10707:8;:57::i;5297:300::-;-1:-1:-1;;;;;5380:18:3;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:3;;5448:1;5421:30;;;6683:51:18;6656:18;;5421:30:3;6537:203:18;5376:86:3;-1:-1:-1;;;;;5475:16:3;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:3;;5543:1;5514:32;;;6683:51:18;6656:18;;5514:32:3;6537:203:18;5471:86:3;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;2463:278:16:-;2611:70;;;2622:13;2611:70;;;;7004:25:18;;;;2645:4:16;7083:18:18;;;7076:43;-1:-1:-1;;;;;7155:15:18;;;;7135:18;;;7128:43;7187:18;;;7180:34;;;;7230:19;;;;7223:35;;;;2611:70:16;;;;;;;;;;6976:19:18;;;;2611:70:16;;;2601:81;;;;;1401:34:10;-1:-1:-1;1388:48:10;;;1497:4;1490:25;;;;1595:4;1579:21;;;2463:278:16:o;3175:103:0:-;3241:30;3252:4;735:10:6;3241::0;:30::i;:::-;3175:103;:::o;6155:316::-;6232:4;6253:22;6261:4;6267:7;6253;:22::i;:::-;6248:217;;6291:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6291:29:0;;;;;;;;;:36;;-1:-1:-1;;6291:36:0;6323:4;6291:36;;;6373:12;735:10:6;;656:96;6373:12:0;-1:-1:-1;;;;;6346:40:0;6364:7;-1:-1:-1;;;;;6346:40:0;6358:4;6346:40;;;;;;;;;;-1:-1:-1;6407:4:0;6400:11;;6248:217;-1:-1:-1;6449:5:0;6442:12;;3714:255:9;3792:7;3812:17;3831:18;3851:16;3871:27;3882:4;3888:9;3871:10;:27::i;:::-;3811:87;;;;;;3908:28;3920:5;3927:8;3908:11;:28::i;:::-;-1:-1:-1;3953:9:9;;3714:255;-1:-1:-1;;;;3714:255:9:o;7362:208:3:-;-1:-1:-1;;;;;7432:21:3;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:3;;7505:1;7476:32;;;6683:51:18;6656:18;;7476:32:3;6537:203:18;7428:91:3;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;6708:317:0:-;6786:4;6806:22;6814:4;6820:7;6806;:22::i;:::-;6802:217;;;6876:5;6844:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6844:29:0;;;;;;;;;;:37;;-1:-1:-1;;6844:37:0;;;6900:40;735:10:6;;6844:12:0;;6900:40;;6876:5;6900:40;-1:-1:-1;6961:4:0;6954:11;;9605:432:3;-1:-1:-1;;;;;9717:19:3;;9713:89;;9759:32;;-1:-1:-1;;;9759:32:3;;9788:1;9759:32;;;6683:51:18;6656:18;;9759:32:3;6537:203:18;9713:89:3;-1:-1:-1;;;;;9815:21:3;;9811:90;;9859:31;;-1:-1:-1;;;9859:31:3;;9887:1;9859:31;;;6683:51:18;6656:18;;9859:31:3;6537:203:18;9811:90:3;-1:-1:-1;;;;;9910:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9955:76;;;;10005:7;-1:-1:-1;;;;;9989:31:3;9998:5;-1:-1:-1;;;;;9989:31:3;;10014:5;9989:31;;;;1633:25:18;;1621:2;1606:18;;1487:177;9989:31:3;;;;;;;;9605:432;;;;:::o;5912:1107::-;-1:-1:-1;;;;;6001:18:3;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:3;;-1:-1:-1;5997:540:3;;-1:-1:-1;;;;;6211:15:3;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:3;;-1:-1:-1;;;;;6407:32:18;;6290:50:3;;;6389:51:18;6456:18;;;6449:34;;;6499:18;;;6492:34;;;6362:18;;6290:50:3;6187:345:18;6240:115:3;-1:-1:-1;;;;;6475:15:3;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:3;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:3;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:3;6996:4;-1:-1:-1;;;;;6987:25:3;;7006:5;6987:25;;;;1633::18;;1621:2;1606:18;;1487:177;6987:25:3;;;;;;;;5912:1107;;;:::o;3408:197:0:-;3496:22;3504:4;3510:7;3496;:22::i;:::-;3491:108;;3541:47;;-1:-1:-1;;;3541:47:0;;-1:-1:-1;;;;;7688:32:18;;3541:47:0;;;7670:51:18;7737:18;;;7730:34;;;7643:18;;3541:47:0;7496:274:18;2129:778:9;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:9;;2823:1;;-1:-1:-1;2827:35:9;;2295:606;2129:778;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:9;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:9;;;;;1633:25:18;;;1606:18;;7634:46:9;1487:177:18;7563:243:9;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:9;;;;;1633:25:18;;;1606:18;;7763:32:9;1487:177:18;5203:1551:9;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:9;;-1:-1:-1;6385:30:9;;-1:-1:-1;6417:1:9;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;8134:25:18;;;8207:4;8195:17;;8175:18;;;8168:45;;;;8229:18;;;8222:34;;;8272:18;;;8265:34;;;6541:24:9;;8106:19:18;;6541:24:9;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:9;;-1:-1:-1;;6541:24:9;;;-1:-1:-1;;;;;;;6579:20:9;;6575:113;;-1:-1:-1;6631:1:9;;-1:-1:-1;6635:29:9;;-1:-1:-1;6631:1:9;;-1:-1:-1;6615:62:9;;6575:113;6706:6;-1:-1:-1;6714:20:9;;-1:-1:-1;6714:20:9;;-1:-1:-1;5203:1551:9;;;;;;;;;:::o;14:286:18:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:18;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:18:o;497:548::-;609:4;638:2;667;656:9;649:21;699:6;693:13;742:6;737:2;726:9;722:18;715:34;767:1;777:140;791:6;788:1;785:13;777:140;;;886:14;;;882:23;;876:30;852:17;;;871:2;848:26;841:66;806:10;;777:140;;;781:3;966:1;961:2;952:6;941:9;937:22;933:31;926:42;1036:2;1029;1025:7;1020:2;1012:6;1008:15;1004:29;993:9;989:45;985:54;977:62;;;;497:548;;;;:::o;1050:173::-;1118:20;;-1:-1:-1;;;;;1167:31:18;;1157:42;;1147:70;;1213:1;1210;1203:12;1147:70;1050:173;;;:::o;1228:254::-;1296:6;1304;1357:2;1345:9;1336:7;1332:23;1328:32;1325:52;;;1373:1;1370;1363:12;1325:52;1396:29;1415:9;1396:29;:::i;:::-;1386:39;1472:2;1457:18;;;;1444:32;;-1:-1:-1;;;1228:254:18:o;1669:328::-;1746:6;1754;1762;1815:2;1803:9;1794:7;1790:23;1786:32;1783:52;;;1831:1;1828;1821:12;1783:52;1854:29;1873:9;1854:29;:::i;:::-;1844:39;;1902:38;1936:2;1925:9;1921:18;1902:38;:::i;:::-;1892:48;;1987:2;1976:9;1972:18;1959:32;1949:42;;1669:328;;;;;:::o;2002:180::-;2061:6;2114:2;2102:9;2093:7;2089:23;2085:32;2082:52;;;2130:1;2127;2120:12;2082:52;-1:-1:-1;2153:23:18;;2002:180;-1:-1:-1;2002:180:18:o;2369:322::-;2446:6;2454;2462;2515:2;2503:9;2494:7;2490:23;2486:32;2483:52;;;2531:1;2528;2521:12;2483:52;2554:29;2573:9;2554:29;:::i;:::-;2544:39;2630:2;2615:18;;2602:32;;-1:-1:-1;2681:2:18;2666:18;;;2653:32;;2369:322;-1:-1:-1;;;2369:322:18:o;2696:254::-;2764:6;2772;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;2877:9;2864:23;2854:33;;2906:38;2940:2;2929:9;2925:18;2906:38;:::i;:::-;2896:48;;2696:254;;;;;:::o;3144:802::-;3241:6;3249;3257;3265;3273;3326:3;3314:9;3305:7;3301:23;3297:33;3294:53;;;3343:1;3340;3333:12;3294:53;3366:29;3385:9;3366:29;:::i;:::-;3356:39;;3442:2;3431:9;3427:18;3414:32;3404:42;;3493:2;3482:9;3478:18;3465:32;3455:42;;3548:2;3537:9;3533:18;3520:32;3571:18;3612:2;3604:6;3601:14;3598:34;;;3628:1;3625;3618:12;3598:34;3666:6;3655:9;3651:22;3641:32;;3711:7;3704:4;3700:2;3696:13;3692:27;3682:55;;3733:1;3730;3723:12;3682:55;3773:2;3760:16;3799:2;3791:6;3788:14;3785:34;;;3815:1;3812;3805:12;3785:34;3860:7;3855:2;3846:6;3842:2;3838:15;3834:24;3831:37;3828:57;;;3881:1;3878;3871:12;3828:57;3144:802;;;;-1:-1:-1;3144:802:18;;-1:-1:-1;3912:2:18;3904:11;;3934:6;3144:802;-1:-1:-1;;;3144:802:18:o;3951:186::-;4010:6;4063:2;4051:9;4042:7;4038:23;4034:32;4031:52;;;4079:1;4076;4069:12;4031:52;4102:29;4121:9;4102:29;:::i;4142:260::-;4210:6;4218;4271:2;4259:9;4250:7;4246:23;4242:32;4239:52;;;4287:1;4284;4277:12;4239:52;4310:29;4329:9;4310:29;:::i;:::-;4300:39;;4358:38;4392:2;4381:9;4377:18;4358:38;:::i;4407:380::-;4486:1;4482:12;;;;4529;;;4550:61;;4604:4;4596:6;4592:17;4582:27;;4550:61;4657:2;4649:6;4646:14;4626:18;4623:38;4620:161;;4703:10;4698:3;4694:20;4691:1;4684:31;4738:4;4735:1;4728:15;4766:4;4763:1;4756:15;4620:161;;4407:380;;;:::o;7269:222::-;7334:9;;;7355:10;;;7352:133;;;7407:10;7402:3;7398:20;7395:1;7388:31;7442:4;7439:1;7432:15;7470:4;7467:1;7460:15;7775:127;7836:10;7831:3;7827:20;7824:1;7817:31;7867:4;7864:1;7857:15;7891:4;7888:1;7881:15"},"methodIdentifiers":{"ATTESTOR_ROLE()":"62723644","COORDINATOR_ROLE()":"6b366cb5","DEFAULT_ADMIN_ROLE()":"a217fddf","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","consumedReceipts(bytes32)":"e0e27fa7","decimals()":"313ce567","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mintDigest(address,uint256,bytes32)":"272a7b79","mintWithReceipt(address,uint256,bytes32,bytes)":"336c739c","name()":"06fdde03","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"receiptHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"units\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attestor\",\"type\":\"address\"}],\"name\":\"ReceiptConsumed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ATTESTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COORDINATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"consumedReceipts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"units\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"receiptHash\",\"type\":\"bytes32\"}],\"name\":\"mintDigest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"units\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"receiptHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintWithReceipt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"mintWithReceipt(address,uint256,bytes32,bytes)\":{\"params\":{\"provider\":\"Address of the compute provider receiving minted tokens\",\"receiptHash\":\"Unique hash representing the off-chain receipt\",\"signature\":\"Coordinator-attested signature authorizing the mint\",\"units\":\"Amount of tokens to mint\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"title\":\"AIToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"consumedReceipts(bytes32)\":{\"notice\":\"Tracks consumed receipt hashes to prevent replay\"},\"mintDigest(address,uint256,bytes32)\":{\"notice\":\"Helper to compute the signed digest required for minting\"},\"mintWithReceipt(address,uint256,bytes32,bytes)\":{\"notice\":\"Mint tokens for a provider when coordinator submits a valid attested receipt\"}},\"notice\":\"ERC20 token that mints units for providers based on attested compute receipts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AIToken.sol\":\"AIToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x1a6b4f6b7798ab80929d491b89d5427a9b3338c0fd1acd0ba325f69c6f1646af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bb7f346c12a14dc622bc105ce3c47202fbc89f4b153a28a63bb68193297330c\",\"dweb:/ipfs/QmagwF8P3bUBXwdo159ueEnY9dLSvEWwK24kk2op58egwG\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@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/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@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/AIToken.sol\":{\"keccak256\":\"0x88819752c9ba0997b9614e39533331959a68535b8ba91fc096a50f656289d7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5686ee0ba46cc0c62eb42896f999552e50738a85a245d8275d71d581be6f9c1\",\"dweb:/ipfs/Qmc9uhftnPWDBapuDcQf44HGYZSZxqDX9xFR8LXxqQjdXP\"]}},\"version\":1}"}},"contracts/AITokenRegistry.sol":{"AITokenRegistry":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateral","type":"uint256"}],"name":"ProviderRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"},{"indexed":false,"internalType":"uint256","name":"collateral","type":"uint256"}],"name":"ProviderUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"COORDINATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"}],"name":"providerInfo","outputs":[{"components":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"}],"internalType":"struct AITokenRegistry.ProviderInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"providers","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"uint256","name":"collateral","type":"uint256"}],"name":"registerProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"}],"name":"updateProvider","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_6862":{"entryPoint":null,"id":6862,"parameterSlots":1,"returnSlots":0},"@_grantRole_257":{"entryPoint":65,"id":257,"parameterSlots":2,"returnSlots":1},"@_msgSender_1147":{"entryPoint":null,"id":1147,"parameterSlots":0,"returnSlots":1},"@hasRole_81":{"entryPoint":null,"id":81,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":237,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:306:18","nodeType":"YulBlock","src":"0:306:18","statements":[{"nativeSrc":"6:3:18","nodeType":"YulBlock","src":"6:3:18","statements":[]},{"body":{"nativeSrc":"95:209:18","nodeType":"YulBlock","src":"95:209:18","statements":[{"body":{"nativeSrc":"141:16:18","nodeType":"YulBlock","src":"141:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:18","nodeType":"YulLiteral","src":"150:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:18","nodeType":"YulLiteral","src":"153:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:18","nodeType":"YulIdentifier","src":"143:6:18"},"nativeSrc":"143:12:18","nodeType":"YulFunctionCall","src":"143:12:18"},"nativeSrc":"143:12:18","nodeType":"YulExpressionStatement","src":"143:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:18","nodeType":"YulIdentifier","src":"116:7:18"},{"name":"headStart","nativeSrc":"125:9:18","nodeType":"YulIdentifier","src":"125:9:18"}],"functionName":{"name":"sub","nativeSrc":"112:3:18","nodeType":"YulIdentifier","src":"112:3:18"},"nativeSrc":"112:23:18","nodeType":"YulFunctionCall","src":"112:23:18"},{"kind":"number","nativeSrc":"137:2:18","nodeType":"YulLiteral","src":"137:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:18","nodeType":"YulIdentifier","src":"108:3:18"},"nativeSrc":"108:32:18","nodeType":"YulFunctionCall","src":"108:32:18"},"nativeSrc":"105:52:18","nodeType":"YulIf","src":"105:52:18"},{"nativeSrc":"166:29:18","nodeType":"YulVariableDeclaration","src":"166:29:18","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:18","nodeType":"YulIdentifier","src":"185:9:18"}],"functionName":{"name":"mload","nativeSrc":"179:5:18","nodeType":"YulIdentifier","src":"179:5:18"},"nativeSrc":"179:16:18","nodeType":"YulFunctionCall","src":"179:16:18"},"variables":[{"name":"value","nativeSrc":"170:5:18","nodeType":"YulTypedName","src":"170:5:18","type":""}]},{"body":{"nativeSrc":"258:16:18","nodeType":"YulBlock","src":"258:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:18","nodeType":"YulLiteral","src":"267:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:18","nodeType":"YulLiteral","src":"270:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:18","nodeType":"YulIdentifier","src":"260:6:18"},"nativeSrc":"260:12:18","nodeType":"YulFunctionCall","src":"260:12:18"},"nativeSrc":"260:12:18","nodeType":"YulExpressionStatement","src":"260:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:18","nodeType":"YulIdentifier","src":"217:5:18"},{"arguments":[{"name":"value","nativeSrc":"228:5:18","nodeType":"YulIdentifier","src":"228:5:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:18","nodeType":"YulLiteral","src":"243:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:18","nodeType":"YulLiteral","src":"248:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:18","nodeType":"YulIdentifier","src":"239:3:18"},"nativeSrc":"239:11:18","nodeType":"YulFunctionCall","src":"239:11:18"},{"kind":"number","nativeSrc":"252:1:18","nodeType":"YulLiteral","src":"252:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:18","nodeType":"YulIdentifier","src":"235:3:18"},"nativeSrc":"235:19:18","nodeType":"YulFunctionCall","src":"235:19:18"}],"functionName":{"name":"and","nativeSrc":"224:3:18","nodeType":"YulIdentifier","src":"224:3:18"},"nativeSrc":"224:31:18","nodeType":"YulFunctionCall","src":"224:31:18"}],"functionName":{"name":"eq","nativeSrc":"214:2:18","nodeType":"YulIdentifier","src":"214:2:18"},"nativeSrc":"214:42:18","nodeType":"YulFunctionCall","src":"214:42:18"}],"functionName":{"name":"iszero","nativeSrc":"207:6:18","nodeType":"YulIdentifier","src":"207:6:18"},"nativeSrc":"207:50:18","nodeType":"YulFunctionCall","src":"207:50:18"},"nativeSrc":"204:70:18","nodeType":"YulIf","src":"204:70:18"},{"nativeSrc":"283:15:18","nodeType":"YulAssignment","src":"283:15:18","value":{"name":"value","nativeSrc":"293:5:18","nodeType":"YulIdentifier","src":"293:5:18"},"variableNames":[{"name":"value0","nativeSrc":"283:6:18","nodeType":"YulIdentifier","src":"283:6:18"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:18","nodeType":"YulTypedName","src":"61:9:18","type":""},{"name":"dataEnd","nativeSrc":"72:7:18","nodeType":"YulTypedName","src":"72:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:18","nodeType":"YulTypedName","src":"84:6:18","type":""}],"src":"14:290:18"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":18,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516109d13803806109d183398101604081905261002f916100ed565b61003a600082610041565b505061011d565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561009b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100e7565b5060005b92915050565b6000602082840312156100ff57600080fd5b81516001600160a01b038116811461011657600080fd5b9392505050565b6108a58061012c6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633ae25916116100715780633ae25916146101915780636b366cb51461020857806391d148541461022f578063a217fddf14610242578063d11905651461024a578063d547741f1461025d57600080fd5b806301ffc9a7146100b95780630787bc27146100e15780631af431a714610125578063248a9ca31461013a5780632f2ff15d1461016b57806336568abe1461017e575b600080fd5b6100cc6100c7366004610754565b610270565b60405190151581526020015b60405180910390f35b61010e6100ef3660046107a1565b6001602081905260009182526040909120805491015460ff9091169082565b6040805192151583526020830191909152016100d8565b6101386101333660046107bc565b6102a7565b005b61015d6101483660046107e6565b60009081526020819052604090206001015490565b6040519081526020016100d8565b6101386101793660046107ff565b6103f5565b61013861018c3660046107ff565b610420565b6101eb61019f3660046107a1565b6040805180820190915260008082526020820152506001600160a01b03166000908152600160208181526040928390208351808501909452805460ff1615158452909101549082015290565b6040805182511515815260209283015192810192909252016100d8565b61015d7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc81565b6100cc61023d3660046107ff565b610458565b61015d600081565b61013861025836600461082b565b610481565b61013861026b3660046107ff565b6105e8565b60006001600160e01b03198216637965db0b60e01b14806102a157506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc6102d18161060d565b6001600160a01b03831661031f5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b210383937bb34b232b960811b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526001602052604090205460ff161561037d5760405162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b6044820152606401610316565b604080518082018252600180825260208083018681526001600160a01b03881660008181528484528690209451855460ff19169015151785559051939092019290925591518481527f90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80910160405180910390a2505050565b6000828152602081905260409020600101546104108161060d565b61041a838361061a565b50505050565b6001600160a01b03811633146104495760405163334bd91960e11b815260040160405180910390fd5b61045382826106ac565b505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc6104ab8161060d565b6001600160a01b0384166104f45760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b210383937bb34b232b960811b6044820152606401610316565b6001600160a01b03841660009081526001602052604090205460ff16806105185750825b6105645760405162461bcd60e51b815260206004820152601760248201527f70726f7669646572206e6f7420726567697374657265640000000000000000006044820152606401610316565b60408051808201825284151580825260208083018681526001600160a01b03891660008181526001808552908790209551865460ff1916901515178655915194909101939093558351918252810185905290917fe226f4be7d881611b5a3ddc83f2e771728014b8012359a29890cd3d670c43dc8910160405180910390a250505050565b6000828152602081905260409020600101546106038161060d565b61041a83836106ac565b6106178133610717565b50565b60006106268383610458565b6106a4576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561065c3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102a1565b5060006102a1565b60006106b88383610458565b156106a4576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102a1565b6107218282610458565b6107505760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610316565b5050565b60006020828403121561076657600080fd5b81356001600160e01b03198116811461077e57600080fd5b9392505050565b80356001600160a01b038116811461079c57600080fd5b919050565b6000602082840312156107b357600080fd5b61077e82610785565b600080604083850312156107cf57600080fd5b6107d883610785565b946020939093013593505050565b6000602082840312156107f857600080fd5b5035919050565b6000806040838503121561081257600080fd5b8235915061082260208401610785565b90509250929050565b60008060006060848603121561084057600080fd5b61084984610785565b92506020840135801515811461085e57600080fd5b92959294505050604091909101359056fea2646970667358221220dcf376f102b1bc83ced9d7af3d5eb71077444d1080da7a114dd7fe4bff0ad28664736f6c63430008180033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9D1 CODESIZE SUB DUP1 PUSH2 0x9D1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xED JUMP JUMPDEST PUSH2 0x3A PUSH1 0x0 DUP3 PUSH2 0x41 JUMP JUMPDEST POP POP PUSH2 0x11D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE3 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x9B CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0xE7 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8A5 DUP1 PUSH2 0x12C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3AE25916 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x3AE25916 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x6B366CB5 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xD1190565 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x787BC27 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x1AF431A7 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x17E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCC PUSH2 0xC7 CALLDATASIZE PUSH1 0x4 PUSH2 0x754 JUMP JUMPDEST PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10E PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x7BC JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x3F5 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x18C CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH2 0x1EB PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE DUP1 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP5 MSTORE SWAP1 SWAP2 ADD SLOAD SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x15D PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC DUP2 JUMP JUMPDEST PUSH2 0xCC PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x458 JUMP JUMPDEST PUSH2 0x15D PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x82B JUMP JUMPDEST PUSH2 0x481 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x26B CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x2A1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC PUSH2 0x2D1 DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x31F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B210383937BB34B232B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x37D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x185B1C9958591E481C9959DA5CDD195C9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x316 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE DUP5 DUP5 MSTORE DUP7 SWAP1 KECCAK256 SWAP5 MLOAD DUP6 SLOAD PUSH1 0xFF NOT AND SWAP1 ISZERO ISZERO OR DUP6 SSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 DUP2 MSTORE PUSH32 0x90C9734131C1E4FB36CDE2D71E6FEB93FB258F71BE8A85411C173D25E1516E80 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x410 DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH2 0x41A DUP4 DUP4 PUSH2 0x61A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x449 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x453 DUP3 DUP3 PUSH2 0x6AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC PUSH2 0x4AB DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B210383937BB34B232B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x316 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x518 JUMPI POP DUP3 JUMPDEST PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F7669646572206E6F742072656769737465726564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x316 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 ISZERO ISZERO DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE SWAP1 DUP8 SWAP1 KECCAK256 SWAP6 MLOAD DUP7 SLOAD PUSH1 0xFF NOT AND SWAP1 ISZERO ISZERO OR DUP7 SSTORE SWAP2 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 PUSH32 0xE226F4BE7D881611B5A3DDC83F2E771728014B8012359A29890CD3D670C43DC8 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x603 DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH2 0x41A DUP4 DUP4 PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 DUP2 CALLER PUSH2 0x717 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP4 DUP4 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x65C CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x2A1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2A1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP4 DUP4 PUSH2 0x458 JUMP JUMPDEST ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0x721 DUP3 DUP3 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x750 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x316 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77E DUP3 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D8 DUP4 PUSH2 0x785 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x822 PUSH1 0x20 DUP5 ADD PUSH2 0x785 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x849 DUP5 PUSH2 0x785 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC RETURN PUSH23 0xF102B1BC83CED9D7AF3D5EB71077444D1080DA7A114DD7 INVALID 0x4B SELFDESTRUCT EXP 0xD2 DUP7 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"250:1468:17:-:0;;;678:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;715:37;2241:4:0;746:5:17;715:10;:37::i;:::-;;678:81;250:1468;;6155:316:0;6232:4;2930:12;;;;;;;;;;;-1:-1:-1;;;;;2930:29:0;;;;;;;;;;;;6248:217;;6291:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6291:29:0;;;;;;;;;:36;;-1:-1:-1;;6291:36:0;6323:4;6291:36;;;6373:12;735:10:6;;656:96;6373:12:0;-1:-1:-1;;;;;6346:40:0;6364:7;-1:-1:-1;;;;;6346:40:0;6358:4;6346:40;;;;;;;;;;-1:-1:-1;6407:4:0;6400:11;;6248:217;-1:-1:-1;6449:5:0;6248:217;6155:316;;;;:::o;14:290:18:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:18;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:18:o;:::-;250:1468:17;;;;;;"},"deployedBytecode":{"functionDebugData":{"@COORDINATOR_ROLE_6827":{"entryPoint":null,"id":6827,"parameterSlots":0,"returnSlots":0},"@DEFAULT_ADMIN_ROLE_30":{"entryPoint":null,"id":30,"parameterSlots":0,"returnSlots":0},"@_checkRole_115":{"entryPoint":1815,"id":115,"parameterSlots":2,"returnSlots":0},"@_checkRole_94":{"entryPoint":1549,"id":94,"parameterSlots":1,"returnSlots":0},"@_grantRole_257":{"entryPoint":1562,"id":257,"parameterSlots":2,"returnSlots":1},"@_msgSender_1147":{"entryPoint":null,"id":1147,"parameterSlots":0,"returnSlots":1},"@_revokeRole_295":{"entryPoint":1708,"id":295,"parameterSlots":2,"returnSlots":1},"@getRoleAdmin_129":{"entryPoint":null,"id":129,"parameterSlots":1,"returnSlots":1},"@grantRole_148":{"entryPoint":1013,"id":148,"parameterSlots":2,"returnSlots":0},"@hasRole_81":{"entryPoint":1112,"id":81,"parameterSlots":2,"returnSlots":1},"@providerInfo_6967":{"entryPoint":null,"id":6967,"parameterSlots":1,"returnSlots":1},"@providers_6837":{"entryPoint":null,"id":6837,"parameterSlots":0,"returnSlots":0},"@registerProvider_6906":{"entryPoint":679,"id":6906,"parameterSlots":2,"returnSlots":0},"@renounceRole_190":{"entryPoint":1056,"id":190,"parameterSlots":2,"returnSlots":0},"@revokeRole_167":{"entryPoint":1512,"id":167,"parameterSlots":2,"returnSlots":0},"@supportsInterface_3076":{"entryPoint":null,"id":3076,"parameterSlots":1,"returnSlots":1},"@supportsInterface_63":{"entryPoint":624,"id":63,"parameterSlots":1,"returnSlots":1},"@updateProvider_6954":{"entryPoint":1153,"id":6954,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":1925,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":1953,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_boolt_uint256":{"entryPoint":2091,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":1980,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":2022,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":2047,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":1876,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool_t_uint256__to_t_bool_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e143b88e92bd2246064657188c9e074c5d06818368b800ac48075028f680939c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_ProviderInfo_$6832_memory_ptr__to_t_struct$_ProviderInfo_$6832_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:4264:18","nodeType":"YulBlock","src":"0:4264:18","statements":[{"nativeSrc":"6:3:18","nodeType":"YulBlock","src":"6:3:18","statements":[]},{"body":{"nativeSrc":"83:217:18","nodeType":"YulBlock","src":"83:217:18","statements":[{"body":{"nativeSrc":"129:16:18","nodeType":"YulBlock","src":"129:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"138:1:18","nodeType":"YulLiteral","src":"138:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"141:1:18","nodeType":"YulLiteral","src":"141:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"131:6:18","nodeType":"YulIdentifier","src":"131:6:18"},"nativeSrc":"131:12:18","nodeType":"YulFunctionCall","src":"131:12:18"},"nativeSrc":"131:12:18","nodeType":"YulExpressionStatement","src":"131:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"104:7:18","nodeType":"YulIdentifier","src":"104:7:18"},{"name":"headStart","nativeSrc":"113:9:18","nodeType":"YulIdentifier","src":"113:9:18"}],"functionName":{"name":"sub","nativeSrc":"100:3:18","nodeType":"YulIdentifier","src":"100:3:18"},"nativeSrc":"100:23:18","nodeType":"YulFunctionCall","src":"100:23:18"},{"kind":"number","nativeSrc":"125:2:18","nodeType":"YulLiteral","src":"125:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"96:3:18","nodeType":"YulIdentifier","src":"96:3:18"},"nativeSrc":"96:32:18","nodeType":"YulFunctionCall","src":"96:32:18"},"nativeSrc":"93:52:18","nodeType":"YulIf","src":"93:52:18"},{"nativeSrc":"154:36:18","nodeType":"YulVariableDeclaration","src":"154:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"180:9:18","nodeType":"YulIdentifier","src":"180:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"167:12:18","nodeType":"YulIdentifier","src":"167:12:18"},"nativeSrc":"167:23:18","nodeType":"YulFunctionCall","src":"167:23:18"},"variables":[{"name":"value","nativeSrc":"158:5:18","nodeType":"YulTypedName","src":"158:5:18","type":""}]},{"body":{"nativeSrc":"254:16:18","nodeType":"YulBlock","src":"254:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"263:1:18","nodeType":"YulLiteral","src":"263:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"266:1:18","nodeType":"YulLiteral","src":"266:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"256:6:18","nodeType":"YulIdentifier","src":"256:6:18"},"nativeSrc":"256:12:18","nodeType":"YulFunctionCall","src":"256:12:18"},"nativeSrc":"256:12:18","nodeType":"YulExpressionStatement","src":"256:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"212:5:18","nodeType":"YulIdentifier","src":"212:5:18"},{"arguments":[{"name":"value","nativeSrc":"223:5:18","nodeType":"YulIdentifier","src":"223:5:18"},{"arguments":[{"kind":"number","nativeSrc":"234:3:18","nodeType":"YulLiteral","src":"234:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"239:10:18","nodeType":"YulLiteral","src":"239:10:18","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"230:3:18","nodeType":"YulIdentifier","src":"230:3:18"},"nativeSrc":"230:20:18","nodeType":"YulFunctionCall","src":"230:20:18"}],"functionName":{"name":"and","nativeSrc":"219:3:18","nodeType":"YulIdentifier","src":"219:3:18"},"nativeSrc":"219:32:18","nodeType":"YulFunctionCall","src":"219:32:18"}],"functionName":{"name":"eq","nativeSrc":"209:2:18","nodeType":"YulIdentifier","src":"209:2:18"},"nativeSrc":"209:43:18","nodeType":"YulFunctionCall","src":"209:43:18"}],"functionName":{"name":"iszero","nativeSrc":"202:6:18","nodeType":"YulIdentifier","src":"202:6:18"},"nativeSrc":"202:51:18","nodeType":"YulFunctionCall","src":"202:51:18"},"nativeSrc":"199:71:18","nodeType":"YulIf","src":"199:71:18"},{"nativeSrc":"279:15:18","nodeType":"YulAssignment","src":"279:15:18","value":{"name":"value","nativeSrc":"289:5:18","nodeType":"YulIdentifier","src":"289:5:18"},"variableNames":[{"name":"value0","nativeSrc":"279:6:18","nodeType":"YulIdentifier","src":"279:6:18"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"14:286:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"49:9:18","nodeType":"YulTypedName","src":"49:9:18","type":""},{"name":"dataEnd","nativeSrc":"60:7:18","nodeType":"YulTypedName","src":"60:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"72:6:18","nodeType":"YulTypedName","src":"72:6:18","type":""}],"src":"14:286:18"},{"body":{"nativeSrc":"400:92:18","nodeType":"YulBlock","src":"400:92:18","statements":[{"nativeSrc":"410:26:18","nodeType":"YulAssignment","src":"410:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"422:9:18","nodeType":"YulIdentifier","src":"422:9:18"},{"kind":"number","nativeSrc":"433:2:18","nodeType":"YulLiteral","src":"433:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"418:3:18","nodeType":"YulIdentifier","src":"418:3:18"},"nativeSrc":"418:18:18","nodeType":"YulFunctionCall","src":"418:18:18"},"variableNames":[{"name":"tail","nativeSrc":"410:4:18","nodeType":"YulIdentifier","src":"410:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"452:9:18","nodeType":"YulIdentifier","src":"452:9:18"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"477:6:18","nodeType":"YulIdentifier","src":"477:6:18"}],"functionName":{"name":"iszero","nativeSrc":"470:6:18","nodeType":"YulIdentifier","src":"470:6:18"},"nativeSrc":"470:14:18","nodeType":"YulFunctionCall","src":"470:14:18"}],"functionName":{"name":"iszero","nativeSrc":"463:6:18","nodeType":"YulIdentifier","src":"463:6:18"},"nativeSrc":"463:22:18","nodeType":"YulFunctionCall","src":"463:22:18"}],"functionName":{"name":"mstore","nativeSrc":"445:6:18","nodeType":"YulIdentifier","src":"445:6:18"},"nativeSrc":"445:41:18","nodeType":"YulFunctionCall","src":"445:41:18"},"nativeSrc":"445:41:18","nodeType":"YulExpressionStatement","src":"445:41:18"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"305:187:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"369:9:18","nodeType":"YulTypedName","src":"369:9:18","type":""},{"name":"value0","nativeSrc":"380:6:18","nodeType":"YulTypedName","src":"380:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"391:4:18","nodeType":"YulTypedName","src":"391:4:18","type":""}],"src":"305:187:18"},{"body":{"nativeSrc":"546:124:18","nodeType":"YulBlock","src":"546:124:18","statements":[{"nativeSrc":"556:29:18","nodeType":"YulAssignment","src":"556:29:18","value":{"arguments":[{"name":"offset","nativeSrc":"578:6:18","nodeType":"YulIdentifier","src":"578:6:18"}],"functionName":{"name":"calldataload","nativeSrc":"565:12:18","nodeType":"YulIdentifier","src":"565:12:18"},"nativeSrc":"565:20:18","nodeType":"YulFunctionCall","src":"565:20:18"},"variableNames":[{"name":"value","nativeSrc":"556:5:18","nodeType":"YulIdentifier","src":"556:5:18"}]},{"body":{"nativeSrc":"648:16:18","nodeType":"YulBlock","src":"648:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"657:1:18","nodeType":"YulLiteral","src":"657:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"660:1:18","nodeType":"YulLiteral","src":"660:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"650:6:18","nodeType":"YulIdentifier","src":"650:6:18"},"nativeSrc":"650:12:18","nodeType":"YulFunctionCall","src":"650:12:18"},"nativeSrc":"650:12:18","nodeType":"YulExpressionStatement","src":"650:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"607:5:18","nodeType":"YulIdentifier","src":"607:5:18"},{"arguments":[{"name":"value","nativeSrc":"618:5:18","nodeType":"YulIdentifier","src":"618:5:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"633:3:18","nodeType":"YulLiteral","src":"633:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"638:1:18","nodeType":"YulLiteral","src":"638:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"629:3:18","nodeType":"YulIdentifier","src":"629:3:18"},"nativeSrc":"629:11:18","nodeType":"YulFunctionCall","src":"629:11:18"},{"kind":"number","nativeSrc":"642:1:18","nodeType":"YulLiteral","src":"642:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"625:3:18","nodeType":"YulIdentifier","src":"625:3:18"},"nativeSrc":"625:19:18","nodeType":"YulFunctionCall","src":"625:19:18"}],"functionName":{"name":"and","nativeSrc":"614:3:18","nodeType":"YulIdentifier","src":"614:3:18"},"nativeSrc":"614:31:18","nodeType":"YulFunctionCall","src":"614:31:18"}],"functionName":{"name":"eq","nativeSrc":"604:2:18","nodeType":"YulIdentifier","src":"604:2:18"},"nativeSrc":"604:42:18","nodeType":"YulFunctionCall","src":"604:42:18"}],"functionName":{"name":"iszero","nativeSrc":"597:6:18","nodeType":"YulIdentifier","src":"597:6:18"},"nativeSrc":"597:50:18","nodeType":"YulFunctionCall","src":"597:50:18"},"nativeSrc":"594:70:18","nodeType":"YulIf","src":"594:70:18"}]},"name":"abi_decode_address","nativeSrc":"497:173:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"525:6:18","nodeType":"YulTypedName","src":"525:6:18","type":""}],"returnVariables":[{"name":"value","nativeSrc":"536:5:18","nodeType":"YulTypedName","src":"536:5:18","type":""}],"src":"497:173:18"},{"body":{"nativeSrc":"745:116:18","nodeType":"YulBlock","src":"745:116:18","statements":[{"body":{"nativeSrc":"791:16:18","nodeType":"YulBlock","src":"791:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"800:1:18","nodeType":"YulLiteral","src":"800:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"803:1:18","nodeType":"YulLiteral","src":"803:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"793:6:18","nodeType":"YulIdentifier","src":"793:6:18"},"nativeSrc":"793:12:18","nodeType":"YulFunctionCall","src":"793:12:18"},"nativeSrc":"793:12:18","nodeType":"YulExpressionStatement","src":"793:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"766:7:18","nodeType":"YulIdentifier","src":"766:7:18"},{"name":"headStart","nativeSrc":"775:9:18","nodeType":"YulIdentifier","src":"775:9:18"}],"functionName":{"name":"sub","nativeSrc":"762:3:18","nodeType":"YulIdentifier","src":"762:3:18"},"nativeSrc":"762:23:18","nodeType":"YulFunctionCall","src":"762:23:18"},{"kind":"number","nativeSrc":"787:2:18","nodeType":"YulLiteral","src":"787:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"758:3:18","nodeType":"YulIdentifier","src":"758:3:18"},"nativeSrc":"758:32:18","nodeType":"YulFunctionCall","src":"758:32:18"},"nativeSrc":"755:52:18","nodeType":"YulIf","src":"755:52:18"},{"nativeSrc":"816:39:18","nodeType":"YulAssignment","src":"816:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"845:9:18","nodeType":"YulIdentifier","src":"845:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"826:18:18","nodeType":"YulIdentifier","src":"826:18:18"},"nativeSrc":"826:29:18","nodeType":"YulFunctionCall","src":"826:29:18"},"variableNames":[{"name":"value0","nativeSrc":"816:6:18","nodeType":"YulIdentifier","src":"816:6:18"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"675:186:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"711:9:18","nodeType":"YulTypedName","src":"711:9:18","type":""},{"name":"dataEnd","nativeSrc":"722:7:18","nodeType":"YulTypedName","src":"722:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"734:6:18","nodeType":"YulTypedName","src":"734:6:18","type":""}],"src":"675:186:18"},{"body":{"nativeSrc":"989:135:18","nodeType":"YulBlock","src":"989:135:18","statements":[{"nativeSrc":"999:26:18","nodeType":"YulAssignment","src":"999:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1011:9:18","nodeType":"YulIdentifier","src":"1011:9:18"},{"kind":"number","nativeSrc":"1022:2:18","nodeType":"YulLiteral","src":"1022:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1007:3:18","nodeType":"YulIdentifier","src":"1007:3:18"},"nativeSrc":"1007:18:18","nodeType":"YulFunctionCall","src":"1007:18:18"},"variableNames":[{"name":"tail","nativeSrc":"999:4:18","nodeType":"YulIdentifier","src":"999:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1041:9:18","nodeType":"YulIdentifier","src":"1041:9:18"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1066:6:18","nodeType":"YulIdentifier","src":"1066:6:18"}],"functionName":{"name":"iszero","nativeSrc":"1059:6:18","nodeType":"YulIdentifier","src":"1059:6:18"},"nativeSrc":"1059:14:18","nodeType":"YulFunctionCall","src":"1059:14:18"}],"functionName":{"name":"iszero","nativeSrc":"1052:6:18","nodeType":"YulIdentifier","src":"1052:6:18"},"nativeSrc":"1052:22:18","nodeType":"YulFunctionCall","src":"1052:22:18"}],"functionName":{"name":"mstore","nativeSrc":"1034:6:18","nodeType":"YulIdentifier","src":"1034:6:18"},"nativeSrc":"1034:41:18","nodeType":"YulFunctionCall","src":"1034:41:18"},"nativeSrc":"1034:41:18","nodeType":"YulExpressionStatement","src":"1034:41:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1095:9:18","nodeType":"YulIdentifier","src":"1095:9:18"},{"kind":"number","nativeSrc":"1106:2:18","nodeType":"YulLiteral","src":"1106:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1091:3:18","nodeType":"YulIdentifier","src":"1091:3:18"},"nativeSrc":"1091:18:18","nodeType":"YulFunctionCall","src":"1091:18:18"},{"name":"value1","nativeSrc":"1111:6:18","nodeType":"YulIdentifier","src":"1111:6:18"}],"functionName":{"name":"mstore","nativeSrc":"1084:6:18","nodeType":"YulIdentifier","src":"1084:6:18"},"nativeSrc":"1084:34:18","nodeType":"YulFunctionCall","src":"1084:34:18"},"nativeSrc":"1084:34:18","nodeType":"YulExpressionStatement","src":"1084:34:18"}]},"name":"abi_encode_tuple_t_bool_t_uint256__to_t_bool_t_uint256__fromStack_reversed","nativeSrc":"866:258:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"950:9:18","nodeType":"YulTypedName","src":"950:9:18","type":""},{"name":"value1","nativeSrc":"961:6:18","nodeType":"YulTypedName","src":"961:6:18","type":""},{"name":"value0","nativeSrc":"969:6:18","nodeType":"YulTypedName","src":"969:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"980:4:18","nodeType":"YulTypedName","src":"980:4:18","type":""}],"src":"866:258:18"},{"body":{"nativeSrc":"1216:167:18","nodeType":"YulBlock","src":"1216:167:18","statements":[{"body":{"nativeSrc":"1262:16:18","nodeType":"YulBlock","src":"1262:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1271:1:18","nodeType":"YulLiteral","src":"1271:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1274:1:18","nodeType":"YulLiteral","src":"1274:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1264:6:18","nodeType":"YulIdentifier","src":"1264:6:18"},"nativeSrc":"1264:12:18","nodeType":"YulFunctionCall","src":"1264:12:18"},"nativeSrc":"1264:12:18","nodeType":"YulExpressionStatement","src":"1264:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1237:7:18","nodeType":"YulIdentifier","src":"1237:7:18"},{"name":"headStart","nativeSrc":"1246:9:18","nodeType":"YulIdentifier","src":"1246:9:18"}],"functionName":{"name":"sub","nativeSrc":"1233:3:18","nodeType":"YulIdentifier","src":"1233:3:18"},"nativeSrc":"1233:23:18","nodeType":"YulFunctionCall","src":"1233:23:18"},{"kind":"number","nativeSrc":"1258:2:18","nodeType":"YulLiteral","src":"1258:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1229:3:18","nodeType":"YulIdentifier","src":"1229:3:18"},"nativeSrc":"1229:32:18","nodeType":"YulFunctionCall","src":"1229:32:18"},"nativeSrc":"1226:52:18","nodeType":"YulIf","src":"1226:52:18"},{"nativeSrc":"1287:39:18","nodeType":"YulAssignment","src":"1287:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1316:9:18","nodeType":"YulIdentifier","src":"1316:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1297:18:18","nodeType":"YulIdentifier","src":"1297:18:18"},"nativeSrc":"1297:29:18","nodeType":"YulFunctionCall","src":"1297:29:18"},"variableNames":[{"name":"value0","nativeSrc":"1287:6:18","nodeType":"YulIdentifier","src":"1287:6:18"}]},{"nativeSrc":"1335:42:18","nodeType":"YulAssignment","src":"1335:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1362:9:18","nodeType":"YulIdentifier","src":"1362:9:18"},{"kind":"number","nativeSrc":"1373:2:18","nodeType":"YulLiteral","src":"1373:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1358:3:18","nodeType":"YulIdentifier","src":"1358:3:18"},"nativeSrc":"1358:18:18","nodeType":"YulFunctionCall","src":"1358:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"1345:12:18","nodeType":"YulIdentifier","src":"1345:12:18"},"nativeSrc":"1345:32:18","nodeType":"YulFunctionCall","src":"1345:32:18"},"variableNames":[{"name":"value1","nativeSrc":"1335:6:18","nodeType":"YulIdentifier","src":"1335:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1129:254:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1174:9:18","nodeType":"YulTypedName","src":"1174:9:18","type":""},{"name":"dataEnd","nativeSrc":"1185:7:18","nodeType":"YulTypedName","src":"1185:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1197:6:18","nodeType":"YulTypedName","src":"1197:6:18","type":""},{"name":"value1","nativeSrc":"1205:6:18","nodeType":"YulTypedName","src":"1205:6:18","type":""}],"src":"1129:254:18"},{"body":{"nativeSrc":"1458:110:18","nodeType":"YulBlock","src":"1458:110:18","statements":[{"body":{"nativeSrc":"1504:16:18","nodeType":"YulBlock","src":"1504:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1513:1:18","nodeType":"YulLiteral","src":"1513:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1516:1:18","nodeType":"YulLiteral","src":"1516:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1506:6:18","nodeType":"YulIdentifier","src":"1506:6:18"},"nativeSrc":"1506:12:18","nodeType":"YulFunctionCall","src":"1506:12:18"},"nativeSrc":"1506:12:18","nodeType":"YulExpressionStatement","src":"1506:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1479:7:18","nodeType":"YulIdentifier","src":"1479:7:18"},{"name":"headStart","nativeSrc":"1488:9:18","nodeType":"YulIdentifier","src":"1488:9:18"}],"functionName":{"name":"sub","nativeSrc":"1475:3:18","nodeType":"YulIdentifier","src":"1475:3:18"},"nativeSrc":"1475:23:18","nodeType":"YulFunctionCall","src":"1475:23:18"},{"kind":"number","nativeSrc":"1500:2:18","nodeType":"YulLiteral","src":"1500:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1471:3:18","nodeType":"YulIdentifier","src":"1471:3:18"},"nativeSrc":"1471:32:18","nodeType":"YulFunctionCall","src":"1471:32:18"},"nativeSrc":"1468:52:18","nodeType":"YulIf","src":"1468:52:18"},{"nativeSrc":"1529:33:18","nodeType":"YulAssignment","src":"1529:33:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1552:9:18","nodeType":"YulIdentifier","src":"1552:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"1539:12:18","nodeType":"YulIdentifier","src":"1539:12:18"},"nativeSrc":"1539:23:18","nodeType":"YulFunctionCall","src":"1539:23:18"},"variableNames":[{"name":"value0","nativeSrc":"1529:6:18","nodeType":"YulIdentifier","src":"1529:6:18"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"1388:180:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1424:9:18","nodeType":"YulTypedName","src":"1424:9:18","type":""},{"name":"dataEnd","nativeSrc":"1435:7:18","nodeType":"YulTypedName","src":"1435:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1447:6:18","nodeType":"YulTypedName","src":"1447:6:18","type":""}],"src":"1388:180:18"},{"body":{"nativeSrc":"1674:76:18","nodeType":"YulBlock","src":"1674:76:18","statements":[{"nativeSrc":"1684:26:18","nodeType":"YulAssignment","src":"1684:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1696:9:18","nodeType":"YulIdentifier","src":"1696:9:18"},{"kind":"number","nativeSrc":"1707:2:18","nodeType":"YulLiteral","src":"1707:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1692:3:18","nodeType":"YulIdentifier","src":"1692:3:18"},"nativeSrc":"1692:18:18","nodeType":"YulFunctionCall","src":"1692:18:18"},"variableNames":[{"name":"tail","nativeSrc":"1684:4:18","nodeType":"YulIdentifier","src":"1684:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1726:9:18","nodeType":"YulIdentifier","src":"1726:9:18"},{"name":"value0","nativeSrc":"1737:6:18","nodeType":"YulIdentifier","src":"1737:6:18"}],"functionName":{"name":"mstore","nativeSrc":"1719:6:18","nodeType":"YulIdentifier","src":"1719:6:18"},"nativeSrc":"1719:25:18","nodeType":"YulFunctionCall","src":"1719:25:18"},"nativeSrc":"1719:25:18","nodeType":"YulExpressionStatement","src":"1719:25:18"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"1573:177:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1643:9:18","nodeType":"YulTypedName","src":"1643:9:18","type":""},{"name":"value0","nativeSrc":"1654:6:18","nodeType":"YulTypedName","src":"1654:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1665:4:18","nodeType":"YulTypedName","src":"1665:4:18","type":""}],"src":"1573:177:18"},{"body":{"nativeSrc":"1842:167:18","nodeType":"YulBlock","src":"1842:167:18","statements":[{"body":{"nativeSrc":"1888:16:18","nodeType":"YulBlock","src":"1888:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1897:1:18","nodeType":"YulLiteral","src":"1897:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1900:1:18","nodeType":"YulLiteral","src":"1900:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1890:6:18","nodeType":"YulIdentifier","src":"1890:6:18"},"nativeSrc":"1890:12:18","nodeType":"YulFunctionCall","src":"1890:12:18"},"nativeSrc":"1890:12:18","nodeType":"YulExpressionStatement","src":"1890:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1863:7:18","nodeType":"YulIdentifier","src":"1863:7:18"},{"name":"headStart","nativeSrc":"1872:9:18","nodeType":"YulIdentifier","src":"1872:9:18"}],"functionName":{"name":"sub","nativeSrc":"1859:3:18","nodeType":"YulIdentifier","src":"1859:3:18"},"nativeSrc":"1859:23:18","nodeType":"YulFunctionCall","src":"1859:23:18"},{"kind":"number","nativeSrc":"1884:2:18","nodeType":"YulLiteral","src":"1884:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1855:3:18","nodeType":"YulIdentifier","src":"1855:3:18"},"nativeSrc":"1855:32:18","nodeType":"YulFunctionCall","src":"1855:32:18"},"nativeSrc":"1852:52:18","nodeType":"YulIf","src":"1852:52:18"},{"nativeSrc":"1913:33:18","nodeType":"YulAssignment","src":"1913:33:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1936:9:18","nodeType":"YulIdentifier","src":"1936:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"1923:12:18","nodeType":"YulIdentifier","src":"1923:12:18"},"nativeSrc":"1923:23:18","nodeType":"YulFunctionCall","src":"1923:23:18"},"variableNames":[{"name":"value0","nativeSrc":"1913:6:18","nodeType":"YulIdentifier","src":"1913:6:18"}]},{"nativeSrc":"1955:48:18","nodeType":"YulAssignment","src":"1955:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1988:9:18","nodeType":"YulIdentifier","src":"1988:9:18"},{"kind":"number","nativeSrc":"1999:2:18","nodeType":"YulLiteral","src":"1999:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1984:3:18","nodeType":"YulIdentifier","src":"1984:3:18"},"nativeSrc":"1984:18:18","nodeType":"YulFunctionCall","src":"1984:18:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1965:18:18","nodeType":"YulIdentifier","src":"1965:18:18"},"nativeSrc":"1965:38:18","nodeType":"YulFunctionCall","src":"1965:38:18"},"variableNames":[{"name":"value1","nativeSrc":"1955:6:18","nodeType":"YulIdentifier","src":"1955:6:18"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"1755:254:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1800:9:18","nodeType":"YulTypedName","src":"1800:9:18","type":""},{"name":"dataEnd","nativeSrc":"1811:7:18","nodeType":"YulTypedName","src":"1811:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1823:6:18","nodeType":"YulTypedName","src":"1823:6:18","type":""},{"name":"value1","nativeSrc":"1831:6:18","nodeType":"YulTypedName","src":"1831:6:18","type":""}],"src":"1755:254:18"},{"body":{"nativeSrc":"2175:162:18","nodeType":"YulBlock","src":"2175:162:18","statements":[{"nativeSrc":"2185:26:18","nodeType":"YulAssignment","src":"2185:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2197:9:18","nodeType":"YulIdentifier","src":"2197:9:18"},{"kind":"number","nativeSrc":"2208:2:18","nodeType":"YulLiteral","src":"2208:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2193:3:18","nodeType":"YulIdentifier","src":"2193:3:18"},"nativeSrc":"2193:18:18","nodeType":"YulFunctionCall","src":"2193:18:18"},"variableNames":[{"name":"tail","nativeSrc":"2185:4:18","nodeType":"YulIdentifier","src":"2185:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2227:9:18","nodeType":"YulIdentifier","src":"2227:9:18"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2258:6:18","nodeType":"YulIdentifier","src":"2258:6:18"}],"functionName":{"name":"mload","nativeSrc":"2252:5:18","nodeType":"YulIdentifier","src":"2252:5:18"},"nativeSrc":"2252:13:18","nodeType":"YulFunctionCall","src":"2252:13:18"}],"functionName":{"name":"iszero","nativeSrc":"2245:6:18","nodeType":"YulIdentifier","src":"2245:6:18"},"nativeSrc":"2245:21:18","nodeType":"YulFunctionCall","src":"2245:21:18"}],"functionName":{"name":"iszero","nativeSrc":"2238:6:18","nodeType":"YulIdentifier","src":"2238:6:18"},"nativeSrc":"2238:29:18","nodeType":"YulFunctionCall","src":"2238:29:18"}],"functionName":{"name":"mstore","nativeSrc":"2220:6:18","nodeType":"YulIdentifier","src":"2220:6:18"},"nativeSrc":"2220:48:18","nodeType":"YulFunctionCall","src":"2220:48:18"},"nativeSrc":"2220:48:18","nodeType":"YulExpressionStatement","src":"2220:48:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2288:9:18","nodeType":"YulIdentifier","src":"2288:9:18"},{"kind":"number","nativeSrc":"2299:4:18","nodeType":"YulLiteral","src":"2299:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2284:3:18","nodeType":"YulIdentifier","src":"2284:3:18"},"nativeSrc":"2284:20:18","nodeType":"YulFunctionCall","src":"2284:20:18"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2316:6:18","nodeType":"YulIdentifier","src":"2316:6:18"},{"kind":"number","nativeSrc":"2324:4:18","nodeType":"YulLiteral","src":"2324:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2312:3:18","nodeType":"YulIdentifier","src":"2312:3:18"},"nativeSrc":"2312:17:18","nodeType":"YulFunctionCall","src":"2312:17:18"}],"functionName":{"name":"mload","nativeSrc":"2306:5:18","nodeType":"YulIdentifier","src":"2306:5:18"},"nativeSrc":"2306:24:18","nodeType":"YulFunctionCall","src":"2306:24:18"}],"functionName":{"name":"mstore","nativeSrc":"2277:6:18","nodeType":"YulIdentifier","src":"2277:6:18"},"nativeSrc":"2277:54:18","nodeType":"YulFunctionCall","src":"2277:54:18"},"nativeSrc":"2277:54:18","nodeType":"YulExpressionStatement","src":"2277:54:18"}]},"name":"abi_encode_tuple_t_struct$_ProviderInfo_$6832_memory_ptr__to_t_struct$_ProviderInfo_$6832_memory_ptr__fromStack_reversed","nativeSrc":"2014:323:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2144:9:18","nodeType":"YulTypedName","src":"2144:9:18","type":""},{"name":"value0","nativeSrc":"2155:6:18","nodeType":"YulTypedName","src":"2155:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2166:4:18","nodeType":"YulTypedName","src":"2166:4:18","type":""}],"src":"2014:323:18"},{"body":{"nativeSrc":"2443:314:18","nodeType":"YulBlock","src":"2443:314:18","statements":[{"body":{"nativeSrc":"2489:16:18","nodeType":"YulBlock","src":"2489:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2498:1:18","nodeType":"YulLiteral","src":"2498:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"2501:1:18","nodeType":"YulLiteral","src":"2501:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2491:6:18","nodeType":"YulIdentifier","src":"2491:6:18"},"nativeSrc":"2491:12:18","nodeType":"YulFunctionCall","src":"2491:12:18"},"nativeSrc":"2491:12:18","nodeType":"YulExpressionStatement","src":"2491:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2464:7:18","nodeType":"YulIdentifier","src":"2464:7:18"},{"name":"headStart","nativeSrc":"2473:9:18","nodeType":"YulIdentifier","src":"2473:9:18"}],"functionName":{"name":"sub","nativeSrc":"2460:3:18","nodeType":"YulIdentifier","src":"2460:3:18"},"nativeSrc":"2460:23:18","nodeType":"YulFunctionCall","src":"2460:23:18"},{"kind":"number","nativeSrc":"2485:2:18","nodeType":"YulLiteral","src":"2485:2:18","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2456:3:18","nodeType":"YulIdentifier","src":"2456:3:18"},"nativeSrc":"2456:32:18","nodeType":"YulFunctionCall","src":"2456:32:18"},"nativeSrc":"2453:52:18","nodeType":"YulIf","src":"2453:52:18"},{"nativeSrc":"2514:39:18","nodeType":"YulAssignment","src":"2514:39:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2543:9:18","nodeType":"YulIdentifier","src":"2543:9:18"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2524:18:18","nodeType":"YulIdentifier","src":"2524:18:18"},"nativeSrc":"2524:29:18","nodeType":"YulFunctionCall","src":"2524:29:18"},"variableNames":[{"name":"value0","nativeSrc":"2514:6:18","nodeType":"YulIdentifier","src":"2514:6:18"}]},{"nativeSrc":"2562:45:18","nodeType":"YulVariableDeclaration","src":"2562:45:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2592:9:18","nodeType":"YulIdentifier","src":"2592:9:18"},{"kind":"number","nativeSrc":"2603:2:18","nodeType":"YulLiteral","src":"2603:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2588:3:18","nodeType":"YulIdentifier","src":"2588:3:18"},"nativeSrc":"2588:18:18","nodeType":"YulFunctionCall","src":"2588:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"2575:12:18","nodeType":"YulIdentifier","src":"2575:12:18"},"nativeSrc":"2575:32:18","nodeType":"YulFunctionCall","src":"2575:32:18"},"variables":[{"name":"value","nativeSrc":"2566:5:18","nodeType":"YulTypedName","src":"2566:5:18","type":""}]},{"body":{"nativeSrc":"2660:16:18","nodeType":"YulBlock","src":"2660:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2669:1:18","nodeType":"YulLiteral","src":"2669:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"2672:1:18","nodeType":"YulLiteral","src":"2672:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2662:6:18","nodeType":"YulIdentifier","src":"2662:6:18"},"nativeSrc":"2662:12:18","nodeType":"YulFunctionCall","src":"2662:12:18"},"nativeSrc":"2662:12:18","nodeType":"YulExpressionStatement","src":"2662:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2629:5:18","nodeType":"YulIdentifier","src":"2629:5:18"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2650:5:18","nodeType":"YulIdentifier","src":"2650:5:18"}],"functionName":{"name":"iszero","nativeSrc":"2643:6:18","nodeType":"YulIdentifier","src":"2643:6:18"},"nativeSrc":"2643:13:18","nodeType":"YulFunctionCall","src":"2643:13:18"}],"functionName":{"name":"iszero","nativeSrc":"2636:6:18","nodeType":"YulIdentifier","src":"2636:6:18"},"nativeSrc":"2636:21:18","nodeType":"YulFunctionCall","src":"2636:21:18"}],"functionName":{"name":"eq","nativeSrc":"2626:2:18","nodeType":"YulIdentifier","src":"2626:2:18"},"nativeSrc":"2626:32:18","nodeType":"YulFunctionCall","src":"2626:32:18"}],"functionName":{"name":"iszero","nativeSrc":"2619:6:18","nodeType":"YulIdentifier","src":"2619:6:18"},"nativeSrc":"2619:40:18","nodeType":"YulFunctionCall","src":"2619:40:18"},"nativeSrc":"2616:60:18","nodeType":"YulIf","src":"2616:60:18"},{"nativeSrc":"2685:15:18","nodeType":"YulAssignment","src":"2685:15:18","value":{"name":"value","nativeSrc":"2695:5:18","nodeType":"YulIdentifier","src":"2695:5:18"},"variableNames":[{"name":"value1","nativeSrc":"2685:6:18","nodeType":"YulIdentifier","src":"2685:6:18"}]},{"nativeSrc":"2709:42:18","nodeType":"YulAssignment","src":"2709:42:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2736:9:18","nodeType":"YulIdentifier","src":"2736:9:18"},{"kind":"number","nativeSrc":"2747:2:18","nodeType":"YulLiteral","src":"2747:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2732:3:18","nodeType":"YulIdentifier","src":"2732:3:18"},"nativeSrc":"2732:18:18","nodeType":"YulFunctionCall","src":"2732:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"2719:12:18","nodeType":"YulIdentifier","src":"2719:12:18"},"nativeSrc":"2719:32:18","nodeType":"YulFunctionCall","src":"2719:32:18"},"variableNames":[{"name":"value2","nativeSrc":"2709:6:18","nodeType":"YulIdentifier","src":"2709:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_boolt_uint256","nativeSrc":"2342:415:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2393:9:18","nodeType":"YulTypedName","src":"2393:9:18","type":""},{"name":"dataEnd","nativeSrc":"2404:7:18","nodeType":"YulTypedName","src":"2404:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2416:6:18","nodeType":"YulTypedName","src":"2416:6:18","type":""},{"name":"value1","nativeSrc":"2424:6:18","nodeType":"YulTypedName","src":"2424:6:18","type":""},{"name":"value2","nativeSrc":"2432:6:18","nodeType":"YulTypedName","src":"2432:6:18","type":""}],"src":"2342:415:18"},{"body":{"nativeSrc":"2936:166:18","nodeType":"YulBlock","src":"2936:166:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2953:9:18","nodeType":"YulIdentifier","src":"2953:9:18"},{"kind":"number","nativeSrc":"2964:2:18","nodeType":"YulLiteral","src":"2964:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2946:6:18","nodeType":"YulIdentifier","src":"2946:6:18"},"nativeSrc":"2946:21:18","nodeType":"YulFunctionCall","src":"2946:21:18"},"nativeSrc":"2946:21:18","nodeType":"YulExpressionStatement","src":"2946:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2987:9:18","nodeType":"YulIdentifier","src":"2987:9:18"},{"kind":"number","nativeSrc":"2998:2:18","nodeType":"YulLiteral","src":"2998:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2983:3:18","nodeType":"YulIdentifier","src":"2983:3:18"},"nativeSrc":"2983:18:18","nodeType":"YulFunctionCall","src":"2983:18:18"},{"kind":"number","nativeSrc":"3003:2:18","nodeType":"YulLiteral","src":"3003:2:18","type":"","value":"16"}],"functionName":{"name":"mstore","nativeSrc":"2976:6:18","nodeType":"YulIdentifier","src":"2976:6:18"},"nativeSrc":"2976:30:18","nodeType":"YulFunctionCall","src":"2976:30:18"},"nativeSrc":"2976:30:18","nodeType":"YulExpressionStatement","src":"2976:30:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3026:9:18","nodeType":"YulIdentifier","src":"3026:9:18"},{"kind":"number","nativeSrc":"3037:2:18","nodeType":"YulLiteral","src":"3037:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3022:3:18","nodeType":"YulIdentifier","src":"3022:3:18"},"nativeSrc":"3022:18:18","nodeType":"YulFunctionCall","src":"3022:18:18"},{"hexValue":"696e76616c69642070726f7669646572","kind":"string","nativeSrc":"3042:18:18","nodeType":"YulLiteral","src":"3042:18:18","type":"","value":"invalid provider"}],"functionName":{"name":"mstore","nativeSrc":"3015:6:18","nodeType":"YulIdentifier","src":"3015:6:18"},"nativeSrc":"3015:46:18","nodeType":"YulFunctionCall","src":"3015:46:18"},"nativeSrc":"3015:46:18","nodeType":"YulExpressionStatement","src":"3015:46:18"},{"nativeSrc":"3070:26:18","nodeType":"YulAssignment","src":"3070:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"3082:9:18","nodeType":"YulIdentifier","src":"3082:9:18"},{"kind":"number","nativeSrc":"3093:2:18","nodeType":"YulLiteral","src":"3093:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3078:3:18","nodeType":"YulIdentifier","src":"3078:3:18"},"nativeSrc":"3078:18:18","nodeType":"YulFunctionCall","src":"3078:18:18"},"variableNames":[{"name":"tail","nativeSrc":"3070:4:18","nodeType":"YulIdentifier","src":"3070:4:18"}]}]},"name":"abi_encode_tuple_t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"2762:340:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2913:9:18","nodeType":"YulTypedName","src":"2913:9:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2927:4:18","nodeType":"YulTypedName","src":"2927:4:18","type":""}],"src":"2762:340:18"},{"body":{"nativeSrc":"3281:168:18","nodeType":"YulBlock","src":"3281:168:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3298:9:18","nodeType":"YulIdentifier","src":"3298:9:18"},{"kind":"number","nativeSrc":"3309:2:18","nodeType":"YulLiteral","src":"3309:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3291:6:18","nodeType":"YulIdentifier","src":"3291:6:18"},"nativeSrc":"3291:21:18","nodeType":"YulFunctionCall","src":"3291:21:18"},"nativeSrc":"3291:21:18","nodeType":"YulExpressionStatement","src":"3291:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3332:9:18","nodeType":"YulIdentifier","src":"3332:9:18"},{"kind":"number","nativeSrc":"3343:2:18","nodeType":"YulLiteral","src":"3343:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3328:3:18","nodeType":"YulIdentifier","src":"3328:3:18"},"nativeSrc":"3328:18:18","nodeType":"YulFunctionCall","src":"3328:18:18"},{"kind":"number","nativeSrc":"3348:2:18","nodeType":"YulLiteral","src":"3348:2:18","type":"","value":"18"}],"functionName":{"name":"mstore","nativeSrc":"3321:6:18","nodeType":"YulIdentifier","src":"3321:6:18"},"nativeSrc":"3321:30:18","nodeType":"YulFunctionCall","src":"3321:30:18"},"nativeSrc":"3321:30:18","nodeType":"YulExpressionStatement","src":"3321:30:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3371:9:18","nodeType":"YulIdentifier","src":"3371:9:18"},{"kind":"number","nativeSrc":"3382:2:18","nodeType":"YulLiteral","src":"3382:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3367:3:18","nodeType":"YulIdentifier","src":"3367:3:18"},"nativeSrc":"3367:18:18","nodeType":"YulFunctionCall","src":"3367:18:18"},{"hexValue":"616c72656164792072656769737465726564","kind":"string","nativeSrc":"3387:20:18","nodeType":"YulLiteral","src":"3387:20:18","type":"","value":"already registered"}],"functionName":{"name":"mstore","nativeSrc":"3360:6:18","nodeType":"YulIdentifier","src":"3360:6:18"},"nativeSrc":"3360:48:18","nodeType":"YulFunctionCall","src":"3360:48:18"},"nativeSrc":"3360:48:18","nodeType":"YulExpressionStatement","src":"3360:48:18"},{"nativeSrc":"3417:26:18","nodeType":"YulAssignment","src":"3417:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"3429:9:18","nodeType":"YulIdentifier","src":"3429:9:18"},{"kind":"number","nativeSrc":"3440:2:18","nodeType":"YulLiteral","src":"3440:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3425:3:18","nodeType":"YulIdentifier","src":"3425:3:18"},"nativeSrc":"3425:18:18","nodeType":"YulFunctionCall","src":"3425:18:18"},"variableNames":[{"name":"tail","nativeSrc":"3417:4:18","nodeType":"YulIdentifier","src":"3417:4:18"}]}]},"name":"abi_encode_tuple_t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"3107:342:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3258:9:18","nodeType":"YulTypedName","src":"3258:9:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3272:4:18","nodeType":"YulTypedName","src":"3272:4:18","type":""}],"src":"3107:342:18"},{"body":{"nativeSrc":"3555:76:18","nodeType":"YulBlock","src":"3555:76:18","statements":[{"nativeSrc":"3565:26:18","nodeType":"YulAssignment","src":"3565:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"3577:9:18","nodeType":"YulIdentifier","src":"3577:9:18"},{"kind":"number","nativeSrc":"3588:2:18","nodeType":"YulLiteral","src":"3588:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3573:3:18","nodeType":"YulIdentifier","src":"3573:3:18"},"nativeSrc":"3573:18:18","nodeType":"YulFunctionCall","src":"3573:18:18"},"variableNames":[{"name":"tail","nativeSrc":"3565:4:18","nodeType":"YulIdentifier","src":"3565:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3607:9:18","nodeType":"YulIdentifier","src":"3607:9:18"},{"name":"value0","nativeSrc":"3618:6:18","nodeType":"YulIdentifier","src":"3618:6:18"}],"functionName":{"name":"mstore","nativeSrc":"3600:6:18","nodeType":"YulIdentifier","src":"3600:6:18"},"nativeSrc":"3600:25:18","nodeType":"YulFunctionCall","src":"3600:25:18"},"nativeSrc":"3600:25:18","nodeType":"YulExpressionStatement","src":"3600:25:18"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"3454:177:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3524:9:18","nodeType":"YulTypedName","src":"3524:9:18","type":""},{"name":"value0","nativeSrc":"3535:6:18","nodeType":"YulTypedName","src":"3535:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3546:4:18","nodeType":"YulTypedName","src":"3546:4:18","type":""}],"src":"3454:177:18"},{"body":{"nativeSrc":"3810:173:18","nodeType":"YulBlock","src":"3810:173:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3827:9:18","nodeType":"YulIdentifier","src":"3827:9:18"},{"kind":"number","nativeSrc":"3838:2:18","nodeType":"YulLiteral","src":"3838:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3820:6:18","nodeType":"YulIdentifier","src":"3820:6:18"},"nativeSrc":"3820:21:18","nodeType":"YulFunctionCall","src":"3820:21:18"},"nativeSrc":"3820:21:18","nodeType":"YulExpressionStatement","src":"3820:21:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3861:9:18","nodeType":"YulIdentifier","src":"3861:9:18"},{"kind":"number","nativeSrc":"3872:2:18","nodeType":"YulLiteral","src":"3872:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3857:3:18","nodeType":"YulIdentifier","src":"3857:3:18"},"nativeSrc":"3857:18:18","nodeType":"YulFunctionCall","src":"3857:18:18"},{"kind":"number","nativeSrc":"3877:2:18","nodeType":"YulLiteral","src":"3877:2:18","type":"","value":"23"}],"functionName":{"name":"mstore","nativeSrc":"3850:6:18","nodeType":"YulIdentifier","src":"3850:6:18"},"nativeSrc":"3850:30:18","nodeType":"YulFunctionCall","src":"3850:30:18"},"nativeSrc":"3850:30:18","nodeType":"YulExpressionStatement","src":"3850:30:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3900:9:18","nodeType":"YulIdentifier","src":"3900:9:18"},{"kind":"number","nativeSrc":"3911:2:18","nodeType":"YulLiteral","src":"3911:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3896:3:18","nodeType":"YulIdentifier","src":"3896:3:18"},"nativeSrc":"3896:18:18","nodeType":"YulFunctionCall","src":"3896:18:18"},{"hexValue":"70726f7669646572206e6f742072656769737465726564","kind":"string","nativeSrc":"3916:25:18","nodeType":"YulLiteral","src":"3916:25:18","type":"","value":"provider not registered"}],"functionName":{"name":"mstore","nativeSrc":"3889:6:18","nodeType":"YulIdentifier","src":"3889:6:18"},"nativeSrc":"3889:53:18","nodeType":"YulFunctionCall","src":"3889:53:18"},"nativeSrc":"3889:53:18","nodeType":"YulExpressionStatement","src":"3889:53:18"},{"nativeSrc":"3951:26:18","nodeType":"YulAssignment","src":"3951:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"3963:9:18","nodeType":"YulIdentifier","src":"3963:9:18"},{"kind":"number","nativeSrc":"3974:2:18","nodeType":"YulLiteral","src":"3974:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3959:3:18","nodeType":"YulIdentifier","src":"3959:3:18"},"nativeSrc":"3959:18:18","nodeType":"YulFunctionCall","src":"3959:18:18"},"variableNames":[{"name":"tail","nativeSrc":"3951:4:18","nodeType":"YulIdentifier","src":"3951:4:18"}]}]},"name":"abi_encode_tuple_t_stringliteral_e143b88e92bd2246064657188c9e074c5d06818368b800ac48075028f680939c__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"3636:347:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3787:9:18","nodeType":"YulTypedName","src":"3787:9:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3801:4:18","nodeType":"YulTypedName","src":"3801:4:18","type":""}],"src":"3636:347:18"},{"body":{"nativeSrc":"4117:145:18","nodeType":"YulBlock","src":"4117:145:18","statements":[{"nativeSrc":"4127:26:18","nodeType":"YulAssignment","src":"4127:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"4139:9:18","nodeType":"YulIdentifier","src":"4139:9:18"},{"kind":"number","nativeSrc":"4150:2:18","nodeType":"YulLiteral","src":"4150:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4135:3:18","nodeType":"YulIdentifier","src":"4135:3:18"},"nativeSrc":"4135:18:18","nodeType":"YulFunctionCall","src":"4135:18:18"},"variableNames":[{"name":"tail","nativeSrc":"4127:4:18","nodeType":"YulIdentifier","src":"4127:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4169:9:18","nodeType":"YulIdentifier","src":"4169:9:18"},{"arguments":[{"name":"value0","nativeSrc":"4184:6:18","nodeType":"YulIdentifier","src":"4184:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4200:3:18","nodeType":"YulLiteral","src":"4200:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"4205:1:18","nodeType":"YulLiteral","src":"4205:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4196:3:18","nodeType":"YulIdentifier","src":"4196:3:18"},"nativeSrc":"4196:11:18","nodeType":"YulFunctionCall","src":"4196:11:18"},{"kind":"number","nativeSrc":"4209:1:18","nodeType":"YulLiteral","src":"4209:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4192:3:18","nodeType":"YulIdentifier","src":"4192:3:18"},"nativeSrc":"4192:19:18","nodeType":"YulFunctionCall","src":"4192:19:18"}],"functionName":{"name":"and","nativeSrc":"4180:3:18","nodeType":"YulIdentifier","src":"4180:3:18"},"nativeSrc":"4180:32:18","nodeType":"YulFunctionCall","src":"4180:32:18"}],"functionName":{"name":"mstore","nativeSrc":"4162:6:18","nodeType":"YulIdentifier","src":"4162:6:18"},"nativeSrc":"4162:51:18","nodeType":"YulFunctionCall","src":"4162:51:18"},"nativeSrc":"4162:51:18","nodeType":"YulExpressionStatement","src":"4162:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4233:9:18","nodeType":"YulIdentifier","src":"4233:9:18"},{"kind":"number","nativeSrc":"4244:2:18","nodeType":"YulLiteral","src":"4244:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4229:3:18","nodeType":"YulIdentifier","src":"4229:3:18"},"nativeSrc":"4229:18:18","nodeType":"YulFunctionCall","src":"4229:18:18"},{"name":"value1","nativeSrc":"4249:6:18","nodeType":"YulIdentifier","src":"4249:6:18"}],"functionName":{"name":"mstore","nativeSrc":"4222:6:18","nodeType":"YulIdentifier","src":"4222:6:18"},"nativeSrc":"4222:34:18","nodeType":"YulFunctionCall","src":"4222:34:18"},"nativeSrc":"4222:34:18","nodeType":"YulExpressionStatement","src":"4222:34:18"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"3988:274:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4078:9:18","nodeType":"YulTypedName","src":"4078:9:18","type":""},{"name":"value1","nativeSrc":"4089:6:18","nodeType":"YulTypedName","src":"4089:6:18","type":""},{"name":"value0","nativeSrc":"4097:6:18","nodeType":"YulTypedName","src":"4097:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4108:4:18","nodeType":"YulTypedName","src":"4108:4:18","type":""}],"src":"3988:274:18"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_bool_t_uint256__to_t_bool_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, iszero(iszero(value0)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_struct$_ProviderInfo_$6832_memory_ptr__to_t_struct$_ProviderInfo_$6832_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, iszero(iszero(mload(value0))))\n mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n }\n function abi_decode_tuple_t_addresst_boolt_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_stringliteral_b031889738a77e524ca32687c1262f71f19b134ef21ff12a7e22fc3c48051046__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 16)\n mstore(add(headStart, 64), \"invalid provider\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 18)\n mstore(add(headStart, 64), \"already registered\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_stringliteral_e143b88e92bd2246064657188c9e074c5d06818368b800ac48075028f680939c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"provider not registered\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n}","id":18,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100b45760003560e01c80633ae25916116100715780633ae25916146101915780636b366cb51461020857806391d148541461022f578063a217fddf14610242578063d11905651461024a578063d547741f1461025d57600080fd5b806301ffc9a7146100b95780630787bc27146100e15780631af431a714610125578063248a9ca31461013a5780632f2ff15d1461016b57806336568abe1461017e575b600080fd5b6100cc6100c7366004610754565b610270565b60405190151581526020015b60405180910390f35b61010e6100ef3660046107a1565b6001602081905260009182526040909120805491015460ff9091169082565b6040805192151583526020830191909152016100d8565b6101386101333660046107bc565b6102a7565b005b61015d6101483660046107e6565b60009081526020819052604090206001015490565b6040519081526020016100d8565b6101386101793660046107ff565b6103f5565b61013861018c3660046107ff565b610420565b6101eb61019f3660046107a1565b6040805180820190915260008082526020820152506001600160a01b03166000908152600160208181526040928390208351808501909452805460ff1615158452909101549082015290565b6040805182511515815260209283015192810192909252016100d8565b61015d7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc81565b6100cc61023d3660046107ff565b610458565b61015d600081565b61013861025836600461082b565b610481565b61013861026b3660046107ff565b6105e8565b60006001600160e01b03198216637965db0b60e01b14806102a157506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc6102d18161060d565b6001600160a01b03831661031f5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b210383937bb34b232b960811b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526001602052604090205460ff161561037d5760405162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b6044820152606401610316565b604080518082018252600180825260208083018681526001600160a01b03881660008181528484528690209451855460ff19169015151785559051939092019290925591518481527f90c9734131c1e4fb36cde2d71e6feb93fb258f71be8a85411c173d25e1516e80910160405180910390a2505050565b6000828152602081905260409020600101546104108161060d565b61041a838361061a565b50505050565b6001600160a01b03811633146104495760405163334bd91960e11b815260040160405180910390fd5b61045382826106ac565b505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7f2e8b98eef02e8df3bd27d1270ded3bea3d14db99c5234c7b14001a7fff957bcc6104ab8161060d565b6001600160a01b0384166104f45760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b210383937bb34b232b960811b6044820152606401610316565b6001600160a01b03841660009081526001602052604090205460ff16806105185750825b6105645760405162461bcd60e51b815260206004820152601760248201527f70726f7669646572206e6f7420726567697374657265640000000000000000006044820152606401610316565b60408051808201825284151580825260208083018681526001600160a01b03891660008181526001808552908790209551865460ff1916901515178655915194909101939093558351918252810185905290917fe226f4be7d881611b5a3ddc83f2e771728014b8012359a29890cd3d670c43dc8910160405180910390a250505050565b6000828152602081905260409020600101546106038161060d565b61041a83836106ac565b6106178133610717565b50565b60006106268383610458565b6106a4576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561065c3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102a1565b5060006102a1565b60006106b88383610458565b156106a4576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102a1565b6107218282610458565b6107505760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610316565b5050565b60006020828403121561076657600080fd5b81356001600160e01b03198116811461077e57600080fd5b9392505050565b80356001600160a01b038116811461079c57600080fd5b919050565b6000602082840312156107b357600080fd5b61077e82610785565b600080604083850312156107cf57600080fd5b6107d883610785565b946020939093013593505050565b6000602082840312156107f857600080fd5b5035919050565b6000806040838503121561081257600080fd5b8235915061082260208401610785565b90509250929050565b60008060006060848603121561084057600080fd5b61084984610785565b92506020840135801515811461085e57600080fd5b92959294505050604091909101359056fea2646970667358221220dcf376f102b1bc83ced9d7af3d5eb71077444d1080da7a114dd7fe4bff0ad28664736f6c63430008180033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3AE25916 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x3AE25916 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x6B366CB5 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xD1190565 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x787BC27 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x1AF431A7 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x17E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCC PUSH2 0xC7 CALLDATASIZE PUSH1 0x4 PUSH2 0x754 JUMP JUMPDEST PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10E PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 ADD SLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x7BC JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x3F5 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x18C CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH2 0x1EB PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE DUP1 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP5 MSTORE SWAP1 SWAP2 ADD SLOAD SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x15D PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC DUP2 JUMP JUMPDEST PUSH2 0xCC PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x458 JUMP JUMPDEST PUSH2 0x15D PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x82B JUMP JUMPDEST PUSH2 0x481 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x26B CALLDATASIZE PUSH1 0x4 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x2A1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC PUSH2 0x2D1 DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x31F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B210383937BB34B232B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x37D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x185B1C9958591E481C9959DA5CDD195C9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x316 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE DUP5 DUP5 MSTORE DUP7 SWAP1 KECCAK256 SWAP5 MLOAD DUP6 SLOAD PUSH1 0xFF NOT AND SWAP1 ISZERO ISZERO OR DUP6 SSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 DUP2 MSTORE PUSH32 0x90C9734131C1E4FB36CDE2D71E6FEB93FB258F71BE8A85411C173D25E1516E80 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x410 DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH2 0x41A DUP4 DUP4 PUSH2 0x61A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x449 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x453 DUP3 DUP3 PUSH2 0x6AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x2E8B98EEF02E8DF3BD27D1270DED3BEA3D14DB99C5234C7B14001A7FFF957BCC PUSH2 0x4AB DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B210383937BB34B232B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x316 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x518 JUMPI POP DUP3 JUMPDEST PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F7669646572206E6F742072656769737465726564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x316 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 ISZERO ISZERO DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE SWAP1 DUP8 SWAP1 KECCAK256 SWAP6 MLOAD DUP7 SLOAD PUSH1 0xFF NOT AND SWAP1 ISZERO ISZERO OR DUP7 SSTORE SWAP2 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 PUSH32 0xE226F4BE7D881611B5A3DDC83F2E771728014B8012359A29890CD3D670C43DC8 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x603 DUP2 PUSH2 0x60D JUMP JUMPDEST PUSH2 0x41A DUP4 DUP4 PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 DUP2 CALLER PUSH2 0x717 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP4 DUP4 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x65C CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x2A1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2A1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP4 DUP4 PUSH2 0x458 JUMP JUMPDEST ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0x721 DUP3 DUP3 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x750 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x316 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77E DUP3 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D8 DUP4 PUSH2 0x785 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x822 PUSH1 0x20 DUP5 ADD PUSH2 0x785 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x849 DUP5 PUSH2 0x785 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC RETURN PUSH23 0xF102B1BC83CED9D7AF3D5EB71077444D1080DA7A114DD7 INVALID 0x4B SELFDESTRUCT EXP 0xD2 DUP7 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"250:1468:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:202:0;;;;;;:::i;:::-;;:::i;:::-;;;470:14:18;;463:22;445:41;;433:2;418:18;2541:202:0;;;;;;;;459:49:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1059:14:18;;1052:22;1034:41;;1106:2;1091:18;;1084:34;;;;1007:18;459:49:17;866:258:18;765:375:17;;;;;;:::i;:::-;;:::i;:::-;;3786:120:0;;;;;;:::i;:::-;3851:7;3877:12;;;;;;;;;;:22;;;;3786:120;;;;1719:25:18;;;1707:2;1692:18;3786:120:0;1573:177:18;4202:136:0;;;;;;:::i;:::-;;:::i;5304:245::-;;;;;;:::i;:::-;;:::i;1589:127:17:-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;1690:19:17;;;;;:9;:19;;;;;;;;;1683:26;;;;;;;;;;;;;;;;;;;;;;;;;1589:127;;;;;2252:13:18;;2245:21;2238:29;2220:48;;2324:4;2312:17;;;2306:24;2284:20;;;2277:54;;;;2193:18;1589:127:17;2014:323:18;298:72:17;;341:29;298:72;;2830:136:0;;;;;;:::i;:::-;;:::i;2196:49::-;;2241:4;2196:49;;1146:437:17;;;;;;:::i;:::-;;:::i;4618:138:0:-;;;;;;:::i;:::-;;:::i;2541:202::-;2626:4;-1:-1:-1;;;;;;2649:47:0;;-1:-1:-1;;;2649:47:0;;:87;;-1:-1:-1;;;;;;;;;;829:40:11;;;2700:36:0;2642:94;2541:202;-1:-1:-1;;2541:202:0:o;765:375:17:-;341:29;2473:16:0;2484:4;2473:10;:16::i;:::-;-1:-1:-1;;;;;883:22:17;::::1;875:51;;;::::0;-1:-1:-1;;;875:51:17;;2964:2:18;875:51:17::1;::::0;::::1;2946:21:18::0;3003:2;2983:18;;;2976:30;-1:-1:-1;;;3022:18:18;;;3015:46;3078:18;;875:51:17::1;;;;;;;;;-1:-1:-1::0;;;;;945:19:17;::::1;;::::0;;;:9:::1;:19;::::0;;;;:26;::::1;;944:27;936:58;;;::::0;-1:-1:-1;;;936:58:17;;3309:2:18;936:58:17::1;::::0;::::1;3291:21:18::0;3348:2;3328:18;;;3321:30;-1:-1:-1;;;3367:18:18;;;3360:48;3425:18;;936:58:17::1;3107:342:18::0;936:58:17::1;1026:52;::::0;;;;::::1;::::0;;1048:4:::1;1026:52:::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;1004:19:17;::::1;-1:-1:-1::0;1004:19:17;;;;;;;;;:74;;;;-1:-1:-1;;1004:74:17::1;::::0;::::1;;;::::0;;;;;;;::::1;::::0;;;;1093:40;;1719:25:18;;;1093:40:17::1;::::0;1692:18:18;1093:40:17::1;;;;;;;765:375:::0;;;:::o;4202:136:0:-;3851:7;3877:12;;;;;;;;;;:22;;;2473:16;2484:4;2473:10;:16::i;:::-;4306:25:::1;4317:4;4323:7;4306:10;:25::i;:::-;;4202:136:::0;;;:::o;5304:245::-;-1:-1:-1;;;;;5397:34:0;;735:10:6;5397:34:0;5393:102;;5454:30;;-1:-1:-1;;;5454:30:0;;;;;;;;;;;5393:102;5505:37;5517:4;5523:18;5505:11;:37::i;:::-;;5304:245;;:::o;2830:136::-;2907:4;2930:12;;;;;;;;;;;-1:-1:-1;;;;;2930:29:0;;;;;;;;;;;;;;;2830:136::o;1146:437:17:-;341:29;2473:16:0;2484:4;2473:10;:16::i;:::-;-1:-1:-1;;;;;1305:22:17;::::1;1297:51;;;::::0;-1:-1:-1;;;1297:51:17;;2964:2:18;1297:51:17::1;::::0;::::1;2946:21:18::0;3003:2;2983:18;;;2976:30;-1:-1:-1;;;3022:18:18;;;3015:46;3078:18;;1297:51:17::1;2762:340:18::0;1297:51:17::1;-1:-1:-1::0;;;;;1366:19:17;::::1;;::::0;;;:9:::1;:19;::::0;;;;:26;::::1;;::::0;:36:::1;;;1396:6;1366:36;1358:72;;;::::0;-1:-1:-1;;;1358:72:17;;3838:2:18;1358:72:17::1;::::0;::::1;3820:21:18::0;3877:2;3857:18;;;3850:30;3916:25;3896:18;;;3889:53;3959:18;;1358:72:17::1;3636:347:18::0;1358:72:17::1;1462:54;::::0;;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;1440:19:17;::::1;-1:-1:-1::0;1440:19:17;;;:9:::1;:19:::0;;;;;;;:76;;;;-1:-1:-1;;1440:76:17::1;::::0;::::1;;;::::0;;;;;;;::::1;::::0;;;;1531:45;;1034:41:18;;;1091:18;;1084:34;;;1440:19:17;;1531:45:::1;::::0;1007:18:18;1531:45:17::1;;;;;;;1146:437:::0;;;;:::o;4618:138:0:-;3851:7;3877:12;;;;;;;;;;:22;;;2473:16;2484:4;2473:10;:16::i;:::-;4723:26:::1;4735:4;4741:7;4723:11;:26::i;3175:103::-:0;3241:30;3252:4;735:10:6;3241::0;:30::i;:::-;3175:103;:::o;6155:316::-;6232:4;6253:22;6261:4;6267:7;6253;:22::i;:::-;6248:217;;6291:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6291:29:0;;;;;;;;;:36;;-1:-1:-1;;6291:36:0;6323:4;6291:36;;;6373:12;735:10:6;;656:96;6373:12:0;-1:-1:-1;;;;;6346:40:0;6364:7;-1:-1:-1;;;;;6346:40:0;6358:4;6346:40;;;;;;;;;;-1:-1:-1;6407:4:0;6400:11;;6248:217;-1:-1:-1;6449:5:0;6442:12;;6708:317;6786:4;6806:22;6814:4;6820:7;6806;:22::i;:::-;6802:217;;;6876:5;6844:12;;;;;;;;;;;-1:-1:-1;;;;;6844:29:0;;;;;;;;;;:37;;-1:-1:-1;;6844:37:0;;;6900:40;735:10:6;;6844:12:0;;6900:40;;6876:5;6900:40;-1:-1:-1;6961:4:0;6954:11;;3408:197;3496:22;3504:4;3510:7;3496;:22::i;:::-;3491:108;;3541:47;;-1:-1:-1;;;3541:47:0;;-1:-1:-1;;;;;4180:32:18;;3541:47:0;;;4162:51:18;4229:18;;;4222:34;;;4135:18;;3541:47:0;3988:274:18;3491:108:0;3408:197;;:::o;14:286:18:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:18;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:18:o;497:173::-;565:20;;-1:-1:-1;;;;;614:31:18;;604:42;;594:70;;660:1;657;650:12;594:70;497:173;;;:::o;675:186::-;734:6;787:2;775:9;766:7;762:23;758:32;755:52;;;803:1;800;793:12;755:52;826:29;845:9;826:29;:::i;1129:254::-;1197:6;1205;1258:2;1246:9;1237:7;1233:23;1229:32;1226:52;;;1274:1;1271;1264:12;1226:52;1297:29;1316:9;1297:29;:::i;:::-;1287:39;1373:2;1358:18;;;;1345:32;;-1:-1:-1;;;1129:254:18:o;1388:180::-;1447:6;1500:2;1488:9;1479:7;1475:23;1471:32;1468:52;;;1516:1;1513;1506:12;1468:52;-1:-1:-1;1539:23:18;;1388:180;-1:-1:-1;1388:180:18:o;1755:254::-;1823:6;1831;1884:2;1872:9;1863:7;1859:23;1855:32;1852:52;;;1900:1;1897;1890:12;1852:52;1936:9;1923:23;1913:33;;1965:38;1999:2;1988:9;1984:18;1965:38;:::i;:::-;1955:48;;1755:254;;;;;:::o;2342:415::-;2416:6;2424;2432;2485:2;2473:9;2464:7;2460:23;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2524:29;2543:9;2524:29;:::i;:::-;2514:39;;2603:2;2592:9;2588:18;2575:32;2650:5;2643:13;2636:21;2629:5;2626:32;2616:60;;2672:1;2669;2662:12;2616:60;2342:415;;2695:5;;-1:-1:-1;;;2747:2:18;2732:18;;;;2719:32;;2342:415::o"},"methodIdentifiers":{"COORDINATOR_ROLE()":"6b366cb5","DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","providerInfo(address)":"3ae25916","providers(address)":"0787bc27","registerProvider(address,uint256)":"1af431a7","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","updateProvider(address,bool,uint256)":"d1190565"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"ProviderRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"ProviderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COORDINATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"providerInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"internalType\":\"struct AITokenRegistry.ProviderInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"providers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"registerProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"updateProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"AITokenRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Tracks permitted providers and staking requirements for AIToken minting\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AITokenRegistry.sol\":\"AITokenRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x1a6b4f6b7798ab80929d491b89d5427a9b3338c0fd1acd0ba325f69c6f1646af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bb7f346c12a14dc622bc105ce3c47202fbc89f4b153a28a63bb68193297330c\",\"dweb:/ipfs/QmagwF8P3bUBXwdo159ueEnY9dLSvEWwK24kk2op58egwG\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"contracts/AITokenRegistry.sol\":{\"keccak256\":\"0x13050e8af8b58571f4bfbdfb4bfc1ebb31a0ae744e13eee9eaf7b8e59939e70a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248bbc11101091686552b2bb24cb93070f75748a5d1a8c38d720528600eecd04\",\"dweb:/ipfs/QmUBYmyzdeJs48tth22G8EyPV9nQpkztjCQNFu9votVWmQ\"]}},\"version\":1}"}}}}}