polytone-evm 0.3.0

Core interfaces for Polytone Interchain accounts and queries.
Documentation
1
{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220fd6401bb23e2b47010c60b01ea73e52f82c43ae689b37b074984f5c5070e312964736f6c63430008180033","sourceMap":"203:14914:43:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea2646970667358221220fd6401bb23e2b47010c60b01ea73e52f82c43ae689b37b074984f5c5070e312964736f6c63430008180033","sourceMap":"203:14914:43:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol":"Math"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol","id":39036,"exportedSymbols":{"Math":[39035]},"nodeType":"SourceUnit","src":"103:15015:43","nodes":[{"id":37983,"nodeType":"PragmaDirective","src":"103:24:43","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":39035,"nodeType":"ContractDefinition","src":"203:14914:43","nodes":[{"id":37987,"nodeType":"ErrorDefinition","src":"277:29:43","nodes":[],"documentation":{"id":37985,"nodeType":"StructuredDocumentation","src":"222:50:43","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"283:20:43","parameters":{"id":37986,"nodeType":"ParameterList","parameters":[],"src":"303:2:43"}},{"id":37992,"nodeType":"EnumDefinition","src":"312:169:43","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":37988,"name":"Floor","nameLocation":"336:5:43","nodeType":"EnumValue","src":"336:5:43"},{"id":37989,"name":"Ceil","nameLocation":"379:4:43","nodeType":"EnumValue","src":"379:4:43"},{"id":37990,"name":"Trunc","nameLocation":"421:5:43","nodeType":"EnumValue","src":"421:5:43"},{"id":37991,"name":"Expand","nameLocation":"451:6:43","nodeType":"EnumValue","src":"451:6:43"}],"name":"Rounding","nameLocation":"317:8:43"},{"id":38024,"nodeType":"FunctionDefinition","src":"585:216:43","nodes":[],"body":{"id":38023,"nodeType":"Block","src":"661:140:43","nodes":[],"statements":[{"id":38022,"nodeType":"UncheckedBlock","src":"671:124:43","statements":[{"assignments":[38005],"declarations":[{"constant":false,"id":38005,"mutability":"mutable","name":"c","nameLocation":"703:1:43","nodeType":"VariableDeclaration","scope":38022,"src":"695:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38004,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38009,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38006,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37995,"src":"707:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":38007,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37997,"src":"711:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:43"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38010,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38005,"src":"730:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":38011,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37995,"src":"734:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38017,"nodeType":"IfStatement","src":"726:28:43","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":38013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":38014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":38015,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":38003,"id":38016,"nodeType":"Return","src":"737:17:43"}},{"expression":{"components":[{"hexValue":"74727565","id":38018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":38019,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38005,"src":"782:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":38003,"id":38021,"nodeType":"Return","src":"768:16:43"}]}]},"documentation":{"id":37993,"nodeType":"StructuredDocumentation","src":"487:93:43","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:43","parameters":{"id":37998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37995,"mutability":"mutable","name":"a","nameLocation":"609:1:43","nodeType":"VariableDeclaration","scope":38024,"src":"601:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37994,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37997,"mutability":"mutable","name":"b","nameLocation":"620:1:43","nodeType":"VariableDeclaration","scope":38024,"src":"612:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37996,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:43"},"returnParameters":{"id":38003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38024,"src":"646:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":37999,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":38002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38024,"src":"652:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38001,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38052,"nodeType":"FunctionDefinition","src":"908:189:43","nodes":[],"body":{"id":38051,"nodeType":"Block","src":"984:113:43","nodes":[],"statements":[{"id":38050,"nodeType":"UncheckedBlock","src":"994:97:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38036,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38029,"src":"1022:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":38037,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38027,"src":"1026:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38043,"nodeType":"IfStatement","src":"1018:28:43","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":38039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":38040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":38041,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":38035,"id":38042,"nodeType":"Return","src":"1029:17:43"}},{"expression":{"components":[{"hexValue":"74727565","id":38044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38045,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38027,"src":"1074:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":38046,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38029,"src":"1078:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38048,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":38035,"id":38049,"nodeType":"Return","src":"1060:20:43"}]}]},"documentation":{"id":38025,"nodeType":"StructuredDocumentation","src":"807:96:43","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:43","parameters":{"id":38030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38027,"mutability":"mutable","name":"a","nameLocation":"932:1:43","nodeType":"VariableDeclaration","scope":38052,"src":"924:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38026,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38029,"mutability":"mutable","name":"b","nameLocation":"943:1:43","nodeType":"VariableDeclaration","scope":38052,"src":"935:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38028,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:43"},"returnParameters":{"id":38035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38052,"src":"969:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":38031,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":38034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38052,"src":"975:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38033,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38094,"nodeType":"FunctionDefinition","src":"1207:493:43","nodes":[],"body":{"id":38093,"nodeType":"Block","src":"1283:417:43","nodes":[],"statements":[{"id":38092,"nodeType":"UncheckedBlock","src":"1293:401:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38064,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38055,"src":"1551:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38071,"nodeType":"IfStatement","src":"1547:28:43","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":38067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":38068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":38069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":38063,"id":38070,"nodeType":"Return","src":"1559:16:43"}},{"assignments":[38073],"declarations":[{"constant":false,"id":38073,"mutability":"mutable","name":"c","nameLocation":"1597:1:43","nodeType":"VariableDeclaration","scope":38092,"src":"1589:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38072,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38077,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38074,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38055,"src":"1601:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38075,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38057,"src":"1605:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:43"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38078,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38073,"src":"1624:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38079,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38055,"src":"1628:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":38081,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38057,"src":"1633:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38087,"nodeType":"IfStatement","src":"1620:33:43","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":38083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":38084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":38085,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":38063,"id":38086,"nodeType":"Return","src":"1636:17:43"}},{"expression":{"components":[{"hexValue":"74727565","id":38088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":38089,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38073,"src":"1681:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38090,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":38063,"id":38091,"nodeType":"Return","src":"1667:16:43"}]}]},"documentation":{"id":38053,"nodeType":"StructuredDocumentation","src":"1103:99:43","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:43","parameters":{"id":38058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38055,"mutability":"mutable","name":"a","nameLocation":"1231:1:43","nodeType":"VariableDeclaration","scope":38094,"src":"1223:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38054,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38057,"mutability":"mutable","name":"b","nameLocation":"1242:1:43","nodeType":"VariableDeclaration","scope":38094,"src":"1234:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38056,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:43"},"returnParameters":{"id":38063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38094,"src":"1268:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":38059,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":38062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38094,"src":"1274:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38061,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38122,"nodeType":"FunctionDefinition","src":"1811:190:43","nodes":[],"body":{"id":38121,"nodeType":"Block","src":"1887:114:43","nodes":[],"statements":[{"id":38120,"nodeType":"UncheckedBlock","src":"1897:98:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38106,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38099,"src":"1925:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38113,"nodeType":"IfStatement","src":"1921:29:43","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":38109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":38110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":38111,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":38105,"id":38112,"nodeType":"Return","src":"1933:17:43"}},{"expression":{"components":[{"hexValue":"74727565","id":38114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38115,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38097,"src":"1978:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38116,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38099,"src":"1982:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38118,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":38105,"id":38119,"nodeType":"Return","src":"1964:20:43"}]}]},"documentation":{"id":38095,"nodeType":"StructuredDocumentation","src":"1706:100:43","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:43","parameters":{"id":38100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38097,"mutability":"mutable","name":"a","nameLocation":"1835:1:43","nodeType":"VariableDeclaration","scope":38122,"src":"1827:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38099,"mutability":"mutable","name":"b","nameLocation":"1846:1:43","nodeType":"VariableDeclaration","scope":38122,"src":"1838:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:43"},"returnParameters":{"id":38105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38122,"src":"1872:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":38101,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":38104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38122,"src":"1878:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38103,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38150,"nodeType":"FunctionDefinition","src":"2122:190:43","nodes":[],"body":{"id":38149,"nodeType":"Block","src":"2198:114:43","nodes":[],"statements":[{"id":38148,"nodeType":"UncheckedBlock","src":"2208:98:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38134,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38127,"src":"2236:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38141,"nodeType":"IfStatement","src":"2232:29:43","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":38137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":38138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":38139,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":38133,"id":38140,"nodeType":"Return","src":"2244:17:43"}},{"expression":{"components":[{"hexValue":"74727565","id":38142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38143,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38125,"src":"2289:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":38144,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38127,"src":"2293:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":38133,"id":38147,"nodeType":"Return","src":"2275:20:43"}]}]},"documentation":{"id":38123,"nodeType":"StructuredDocumentation","src":"2007:110:43","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:43","parameters":{"id":38128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38125,"mutability":"mutable","name":"a","nameLocation":"2146:1:43","nodeType":"VariableDeclaration","scope":38150,"src":"2138:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38124,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38127,"mutability":"mutable","name":"b","nameLocation":"2157:1:43","nodeType":"VariableDeclaration","scope":38150,"src":"2149:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38126,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:43"},"returnParameters":{"id":38133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38150,"src":"2183:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":38129,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":38132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38150,"src":"2189:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38131,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38168,"nodeType":"FunctionDefinition","src":"2382:104:43","nodes":[],"body":{"id":38167,"nodeType":"Block","src":"2449:37:43","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38160,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38153,"src":"2466:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":38161,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38155,"src":"2470:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":38164,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38155,"src":"2478:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:43","trueExpression":{"id":38163,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38153,"src":"2474:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38159,"id":38166,"nodeType":"Return","src":"2459:20:43"}]},"documentation":{"id":38151,"nodeType":"StructuredDocumentation","src":"2318:59:43","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:43","parameters":{"id":38156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38153,"mutability":"mutable","name":"a","nameLocation":"2403:1:43","nodeType":"VariableDeclaration","scope":38168,"src":"2395:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38152,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38155,"mutability":"mutable","name":"b","nameLocation":"2414:1:43","nodeType":"VariableDeclaration","scope":38168,"src":"2406:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38154,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:43"},"returnParameters":{"id":38159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38168,"src":"2440:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38157,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38186,"nodeType":"FunctionDefinition","src":"2557:104:43","nodes":[],"body":{"id":38185,"nodeType":"Block","src":"2624:37:43","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38178,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38171,"src":"2641:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":38179,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38173,"src":"2645:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":38182,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38173,"src":"2653:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:43","trueExpression":{"id":38181,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38171,"src":"2649:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38177,"id":38184,"nodeType":"Return","src":"2634:20:43"}]},"documentation":{"id":38169,"nodeType":"StructuredDocumentation","src":"2492:60:43","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:43","parameters":{"id":38174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38171,"mutability":"mutable","name":"a","nameLocation":"2578:1:43","nodeType":"VariableDeclaration","scope":38186,"src":"2570:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38170,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38173,"mutability":"mutable","name":"b","nameLocation":"2589:1:43","nodeType":"VariableDeclaration","scope":38186,"src":"2581:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38172,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:43"},"returnParameters":{"id":38177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38176,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38186,"src":"2615:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38175,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38209,"nodeType":"FunctionDefinition","src":"2774:153:43","nodes":[],"body":{"id":38208,"nodeType":"Block","src":"2845:82:43","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38196,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38189,"src":"2900:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":38197,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38191,"src":"2904:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38199,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38200,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38189,"src":"2910:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":38201,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38191,"src":"2914:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":38204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38195,"id":38207,"nodeType":"Return","src":"2892:28:43"}]},"documentation":{"id":38187,"nodeType":"StructuredDocumentation","src":"2667:102:43","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:43","parameters":{"id":38192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38189,"mutability":"mutable","name":"a","nameLocation":"2799:1:43","nodeType":"VariableDeclaration","scope":38209,"src":"2791:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38188,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38191,"mutability":"mutable","name":"b","nameLocation":"2810:1:43","nodeType":"VariableDeclaration","scope":38209,"src":"2802:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38190,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:43"},"returnParameters":{"id":38195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38194,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38209,"src":"2836:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38193,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38243,"nodeType":"FunctionDefinition","src":"3148:331:43","nodes":[],"body":{"id":38242,"nodeType":"Block","src":"3219:260:43","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38219,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38214,"src":"3233:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38227,"nodeType":"IfStatement","src":"3229:127:43","trueBody":{"id":38226,"nodeType":"Block","src":"3241:115:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38222,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38212,"src":"3340:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38223,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38214,"src":"3344:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38218,"id":38225,"nodeType":"Return","src":"3333:12:43"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38228,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38212,"src":"3444:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38232,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38212,"src":"3458:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":38233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38235,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38236,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38214,"src":"3467:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":38238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:43","trueExpression":{"hexValue":"30","id":38231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38218,"id":38241,"nodeType":"Return","src":"3437:35:43"}]},"documentation":{"id":38210,"nodeType":"StructuredDocumentation","src":"2933:210:43","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."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:43","parameters":{"id":38215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38212,"mutability":"mutable","name":"a","nameLocation":"3173:1:43","nodeType":"VariableDeclaration","scope":38243,"src":"3165:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38211,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38214,"mutability":"mutable","name":"b","nameLocation":"3184:1:43","nodeType":"VariableDeclaration","scope":38243,"src":"3176:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38213,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:43"},"returnParameters":{"id":38218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38243,"src":"3210:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38216,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38369,"nodeType":"FunctionDefinition","src":"3803:4116:43","nodes":[],"body":{"id":38368,"nodeType":"Block","src":"3901:4018:43","nodes":[],"statements":[{"id":38367,"nodeType":"UncheckedBlock","src":"3911:4002:43","statements":[{"assignments":[38256],"declarations":[{"constant":false,"id":38256,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:43","nodeType":"VariableDeclaration","scope":38367,"src":"4232:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38255,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38260,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38257,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38246,"src":"4248:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38258,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38248,"src":"4252:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:43"},{"assignments":[38262],"declarations":[{"constant":false,"id":38262,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:43","nodeType":"VariableDeclaration","scope":38367,"src":"4312:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38261,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38263,"nodeType":"VariableDeclarationStatement","src":"4312:13:43"},{"AST":{"nativeSrc":"4392:122:43","nodeType":"YulBlock","src":"4392:122:43","statements":[{"nativeSrc":"4410:30:43","nodeType":"YulVariableDeclaration","src":"4410:30:43","value":{"arguments":[{"name":"x","nativeSrc":"4427:1:43","nodeType":"YulIdentifier","src":"4427:1:43"},{"name":"y","nativeSrc":"4430:1:43","nodeType":"YulIdentifier","src":"4430:1:43"},{"arguments":[{"kind":"number","nativeSrc":"4437:1:43","nodeType":"YulLiteral","src":"4437:1:43","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4433:3:43","nodeType":"YulIdentifier","src":"4433:3:43"},"nativeSrc":"4433:6:43","nodeType":"YulFunctionCall","src":"4433:6:43"}],"functionName":{"name":"mulmod","nativeSrc":"4420:6:43","nodeType":"YulIdentifier","src":"4420:6:43"},"nativeSrc":"4420:20:43","nodeType":"YulFunctionCall","src":"4420:20:43"},"variables":[{"name":"mm","nativeSrc":"4414:2:43","nodeType":"YulTypedName","src":"4414:2:43","type":""}]},{"nativeSrc":"4457:43:43","nodeType":"YulAssignment","src":"4457:43:43","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"4474:2:43","nodeType":"YulIdentifier","src":"4474:2:43"},{"name":"prod0","nativeSrc":"4478:5:43","nodeType":"YulIdentifier","src":"4478:5:43"}],"functionName":{"name":"sub","nativeSrc":"4470:3:43","nodeType":"YulIdentifier","src":"4470:3:43"},"nativeSrc":"4470:14:43","nodeType":"YulFunctionCall","src":"4470:14:43"},{"arguments":[{"name":"mm","nativeSrc":"4489:2:43","nodeType":"YulIdentifier","src":"4489:2:43"},{"name":"prod0","nativeSrc":"4493:5:43","nodeType":"YulIdentifier","src":"4493:5:43"}],"functionName":{"name":"lt","nativeSrc":"4486:2:43","nodeType":"YulIdentifier","src":"4486:2:43"},"nativeSrc":"4486:13:43","nodeType":"YulFunctionCall","src":"4486:13:43"}],"functionName":{"name":"sub","nativeSrc":"4466:3:43","nodeType":"YulIdentifier","src":"4466:3:43"},"nativeSrc":"4466:34:43","nodeType":"YulFunctionCall","src":"4466:34:43"},"variableNames":[{"name":"prod1","nativeSrc":"4457:5:43","nodeType":"YulIdentifier","src":"4457:5:43"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":38256,"isOffset":false,"isSlot":false,"src":"4478:5:43","valueSize":1},{"declaration":38256,"isOffset":false,"isSlot":false,"src":"4493:5:43","valueSize":1},{"declaration":38262,"isOffset":false,"isSlot":false,"src":"4457:5:43","valueSize":1},{"declaration":38246,"isOffset":false,"isSlot":false,"src":"4427:1:43","valueSize":1},{"declaration":38248,"isOffset":false,"isSlot":false,"src":"4430:1:43","valueSize":1}],"id":38264,"nodeType":"InlineAssembly","src":"4383:131:43"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38265,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38262,"src":"4595:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38273,"nodeType":"IfStatement","src":"4591:368:43","trueBody":{"id":38272,"nodeType":"Block","src":"4607:352:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38268,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38256,"src":"4925:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38269,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"4933:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38254,"id":38271,"nodeType":"Return","src":"4918:26:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38274,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"5065:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":38275,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38262,"src":"5080:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38281,"nodeType":"IfStatement","src":"5061:88:43","trueBody":{"id":38280,"nodeType":"Block","src":"5087:62:43","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":38277,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37987,"src":"5112:20:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":38278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38279,"nodeType":"RevertStatement","src":"5105:29:43"}]}},{"assignments":[38283],"declarations":[{"constant":false,"id":38283,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:43","nodeType":"VariableDeclaration","scope":38367,"src":"5404:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38282,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38284,"nodeType":"VariableDeclarationStatement","src":"5404:17:43"},{"AST":{"nativeSrc":"5444:291:43","nodeType":"YulBlock","src":"5444:291:43","statements":[{"nativeSrc":"5513:38:43","nodeType":"YulAssignment","src":"5513:38:43","value":{"arguments":[{"name":"x","nativeSrc":"5533:1:43","nodeType":"YulIdentifier","src":"5533:1:43"},{"name":"y","nativeSrc":"5536:1:43","nodeType":"YulIdentifier","src":"5536:1:43"},{"name":"denominator","nativeSrc":"5539:11:43","nodeType":"YulIdentifier","src":"5539:11:43"}],"functionName":{"name":"mulmod","nativeSrc":"5526:6:43","nodeType":"YulIdentifier","src":"5526:6:43"},"nativeSrc":"5526:25:43","nodeType":"YulFunctionCall","src":"5526:25:43"},"variableNames":[{"name":"remainder","nativeSrc":"5513:9:43","nodeType":"YulIdentifier","src":"5513:9:43"}]},{"nativeSrc":"5633:41:43","nodeType":"YulAssignment","src":"5633:41:43","value":{"arguments":[{"name":"prod1","nativeSrc":"5646:5:43","nodeType":"YulIdentifier","src":"5646:5:43"},{"arguments":[{"name":"remainder","nativeSrc":"5656:9:43","nodeType":"YulIdentifier","src":"5656:9:43"},{"name":"prod0","nativeSrc":"5667:5:43","nodeType":"YulIdentifier","src":"5667:5:43"}],"functionName":{"name":"gt","nativeSrc":"5653:2:43","nodeType":"YulIdentifier","src":"5653:2:43"},"nativeSrc":"5653:20:43","nodeType":"YulFunctionCall","src":"5653:20:43"}],"functionName":{"name":"sub","nativeSrc":"5642:3:43","nodeType":"YulIdentifier","src":"5642:3:43"},"nativeSrc":"5642:32:43","nodeType":"YulFunctionCall","src":"5642:32:43"},"variableNames":[{"name":"prod1","nativeSrc":"5633:5:43","nodeType":"YulIdentifier","src":"5633:5:43"}]},{"nativeSrc":"5691:30:43","nodeType":"YulAssignment","src":"5691:30:43","value":{"arguments":[{"name":"prod0","nativeSrc":"5704:5:43","nodeType":"YulIdentifier","src":"5704:5:43"},{"name":"remainder","nativeSrc":"5711:9:43","nodeType":"YulIdentifier","src":"5711:9:43"}],"functionName":{"name":"sub","nativeSrc":"5700:3:43","nodeType":"YulIdentifier","src":"5700:3:43"},"nativeSrc":"5700:21:43","nodeType":"YulFunctionCall","src":"5700:21:43"},"variableNames":[{"name":"prod0","nativeSrc":"5691:5:43","nodeType":"YulIdentifier","src":"5691:5:43"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":38250,"isOffset":false,"isSlot":false,"src":"5539:11:43","valueSize":1},{"declaration":38256,"isOffset":false,"isSlot":false,"src":"5667:5:43","valueSize":1},{"declaration":38256,"isOffset":false,"isSlot":false,"src":"5691:5:43","valueSize":1},{"declaration":38256,"isOffset":false,"isSlot":false,"src":"5704:5:43","valueSize":1},{"declaration":38262,"isOffset":false,"isSlot":false,"src":"5633:5:43","valueSize":1},{"declaration":38262,"isOffset":false,"isSlot":false,"src":"5646:5:43","valueSize":1},{"declaration":38283,"isOffset":false,"isSlot":false,"src":"5513:9:43","valueSize":1},{"declaration":38283,"isOffset":false,"isSlot":false,"src":"5656:9:43","valueSize":1},{"declaration":38283,"isOffset":false,"isSlot":false,"src":"5711:9:43","valueSize":1},{"declaration":38246,"isOffset":false,"isSlot":false,"src":"5533:1:43","valueSize":1},{"declaration":38248,"isOffset":false,"isSlot":false,"src":"5536:1:43","valueSize":1}],"id":38285,"nodeType":"InlineAssembly","src":"5435:300:43"},{"assignments":[38287],"declarations":[{"constant":false,"id":38287,"mutability":"mutable","name":"twos","nameLocation":"5947:4:43","nodeType":"VariableDeclaration","scope":38367,"src":"5939:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38286,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38294,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38288,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"5954:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":38289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":38290,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"5973:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38292,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:43"},{"AST":{"nativeSrc":"6008:362:43","nodeType":"YulBlock","src":"6008:362:43","statements":[{"nativeSrc":"6073:37:43","nodeType":"YulAssignment","src":"6073:37:43","value":{"arguments":[{"name":"denominator","nativeSrc":"6092:11:43","nodeType":"YulIdentifier","src":"6092:11:43"},{"name":"twos","nativeSrc":"6105:4:43","nodeType":"YulIdentifier","src":"6105:4:43"}],"functionName":{"name":"div","nativeSrc":"6088:3:43","nodeType":"YulIdentifier","src":"6088:3:43"},"nativeSrc":"6088:22:43","nodeType":"YulFunctionCall","src":"6088:22:43"},"variableNames":[{"name":"denominator","nativeSrc":"6073:11:43","nodeType":"YulIdentifier","src":"6073:11:43"}]},{"nativeSrc":"6177:25:43","nodeType":"YulAssignment","src":"6177:25:43","value":{"arguments":[{"name":"prod0","nativeSrc":"6190:5:43","nodeType":"YulIdentifier","src":"6190:5:43"},{"name":"twos","nativeSrc":"6197:4:43","nodeType":"YulIdentifier","src":"6197:4:43"}],"functionName":{"name":"div","nativeSrc":"6186:3:43","nodeType":"YulIdentifier","src":"6186:3:43"},"nativeSrc":"6186:16:43","nodeType":"YulFunctionCall","src":"6186:16:43"},"variableNames":[{"name":"prod0","nativeSrc":"6177:5:43","nodeType":"YulIdentifier","src":"6177:5:43"}]},{"nativeSrc":"6317:39:43","nodeType":"YulAssignment","src":"6317:39:43","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6337:1:43","nodeType":"YulLiteral","src":"6337:1:43","type":"","value":"0"},{"name":"twos","nativeSrc":"6340:4:43","nodeType":"YulIdentifier","src":"6340:4:43"}],"functionName":{"name":"sub","nativeSrc":"6333:3:43","nodeType":"YulIdentifier","src":"6333:3:43"},"nativeSrc":"6333:12:43","nodeType":"YulFunctionCall","src":"6333:12:43"},{"name":"twos","nativeSrc":"6347:4:43","nodeType":"YulIdentifier","src":"6347:4:43"}],"functionName":{"name":"div","nativeSrc":"6329:3:43","nodeType":"YulIdentifier","src":"6329:3:43"},"nativeSrc":"6329:23:43","nodeType":"YulFunctionCall","src":"6329:23:43"},{"kind":"number","nativeSrc":"6354:1:43","nodeType":"YulLiteral","src":"6354:1:43","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6325:3:43","nodeType":"YulIdentifier","src":"6325:3:43"},"nativeSrc":"6325:31:43","nodeType":"YulFunctionCall","src":"6325:31:43"},"variableNames":[{"name":"twos","nativeSrc":"6317:4:43","nodeType":"YulIdentifier","src":"6317:4:43"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":38250,"isOffset":false,"isSlot":false,"src":"6073:11:43","valueSize":1},{"declaration":38250,"isOffset":false,"isSlot":false,"src":"6092:11:43","valueSize":1},{"declaration":38256,"isOffset":false,"isSlot":false,"src":"6177:5:43","valueSize":1},{"declaration":38256,"isOffset":false,"isSlot":false,"src":"6190:5:43","valueSize":1},{"declaration":38287,"isOffset":false,"isSlot":false,"src":"6105:4:43","valueSize":1},{"declaration":38287,"isOffset":false,"isSlot":false,"src":"6197:4:43","valueSize":1},{"declaration":38287,"isOffset":false,"isSlot":false,"src":"6317:4:43","valueSize":1},{"declaration":38287,"isOffset":false,"isSlot":false,"src":"6340:4:43","valueSize":1},{"declaration":38287,"isOffset":false,"isSlot":false,"src":"6347:4:43","valueSize":1}],"id":38295,"nodeType":"InlineAssembly","src":"5999:371:43"},{"expression":{"id":38300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38296,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38256,"src":"6436:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38297,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38262,"src":"6445:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38298,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38287,"src":"6453:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38301,"nodeType":"ExpressionStatement","src":"6436:21:43"},{"assignments":[38303],"declarations":[{"constant":false,"id":38303,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:43","nodeType":"VariableDeclaration","scope":38367,"src":"6775:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38302,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38310,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":38304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:43","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38305,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"6798:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38307,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":38308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:43"},{"expression":{"id":38317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38311,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7031:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":38312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38313,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"7046:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38314,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7060:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38318,"nodeType":"ExpressionStatement","src":"7031:36:43"},{"expression":{"id":38325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38319,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7100:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":38320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38321,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"7115:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38322,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7129:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38326,"nodeType":"ExpressionStatement","src":"7100:36:43"},{"expression":{"id":38333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38327,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7170:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":38328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38329,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"7185:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38330,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7199:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38334,"nodeType":"ExpressionStatement","src":"7170:36:43"},{"expression":{"id":38341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38335,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7240:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":38336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38337,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"7255:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38338,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7269:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38342,"nodeType":"ExpressionStatement","src":"7240:36:43"},{"expression":{"id":38349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38343,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7310:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":38344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38345,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"7325:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38346,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7339:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38350,"nodeType":"ExpressionStatement","src":"7310:36:43"},{"expression":{"id":38357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38351,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7381:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":38352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38353,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38250,"src":"7396:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38354,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7410:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38358,"nodeType":"ExpressionStatement","src":"7381:36:43"},{"expression":{"id":38363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38359,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"7851:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38360,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38256,"src":"7860:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38361,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38303,"src":"7868:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38364,"nodeType":"ExpressionStatement","src":"7851:24:43"},{"expression":{"id":38365,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"7896:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38254,"id":38366,"nodeType":"Return","src":"7889:13:43"}]}]},"documentation":{"id":38244,"nodeType":"StructuredDocumentation","src":"3485:313:43","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev 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."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:43","parameters":{"id":38251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38246,"mutability":"mutable","name":"x","nameLocation":"3827:1:43","nodeType":"VariableDeclaration","scope":38369,"src":"3819:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38245,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38248,"mutability":"mutable","name":"y","nameLocation":"3838:1:43","nodeType":"VariableDeclaration","scope":38369,"src":"3830:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38247,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38250,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:43","nodeType":"VariableDeclaration","scope":38369,"src":"3841:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38249,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:43"},"returnParameters":{"id":38254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38253,"mutability":"mutable","name":"result","nameLocation":"3893:6:43","nodeType":"VariableDeclaration","scope":38369,"src":"3885:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38252,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38412,"nodeType":"FunctionDefinition","src":"8051:302:43","nodes":[],"body":{"id":38411,"nodeType":"Block","src":"8161:192:43","nodes":[],"statements":[{"assignments":[38385],"declarations":[{"constant":false,"id":38385,"mutability":"mutable","name":"result","nameLocation":"8179:6:43","nodeType":"VariableDeclaration","scope":38411,"src":"8171:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38384,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38391,"initialValue":{"arguments":[{"id":38387,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38372,"src":"8195:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38388,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38374,"src":"8198:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38389,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38376,"src":"8201:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38386,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[38369,38412],"referencedDeclaration":38369,"src":"8188:6:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":38390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:43"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":38402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":38393,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38379,"src":"8244:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}],"id":38392,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39034,"src":"8227:16:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$37992_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":38394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":38396,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38372,"src":"8264:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38397,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38374,"src":"8267:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38398,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38376,"src":"8270:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38395,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:43","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":38399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38408,"nodeType":"IfStatement","src":"8223:101:43","trueBody":{"id":38407,"nodeType":"Block","src":"8288:36:43","statements":[{"expression":{"id":38405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38403,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38385,"src":"8302:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":38404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38406,"nodeType":"ExpressionStatement","src":"8302:11:43"}]}},{"expression":{"id":38409,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38385,"src":"8340:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38383,"id":38410,"nodeType":"Return","src":"8333:13:43"}]},"documentation":{"id":38370,"nodeType":"StructuredDocumentation","src":"7925:121:43","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:43","parameters":{"id":38380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38372,"mutability":"mutable","name":"x","nameLocation":"8075:1:43","nodeType":"VariableDeclaration","scope":38412,"src":"8067:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38371,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38374,"mutability":"mutable","name":"y","nameLocation":"8086:1:43","nodeType":"VariableDeclaration","scope":38412,"src":"8078:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38373,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38376,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:43","nodeType":"VariableDeclaration","scope":38412,"src":"8089:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38375,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38379,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:43","nodeType":"VariableDeclaration","scope":38412,"src":"8110:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"},"typeName":{"id":38378,"nodeType":"UserDefinedTypeName","pathNode":{"id":38377,"name":"Rounding","nameLocations":["8110:8:43"],"nodeType":"IdentifierPath","referencedDeclaration":37992,"src":"8110:8:43"},"referencedDeclaration":37992,"src":"8110:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:43"},"returnParameters":{"id":38383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38412,"src":"8152:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38381,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38524,"nodeType":"FunctionDefinition","src":"8587:1642:43","nodes":[],"body":{"id":38523,"nodeType":"Block","src":"8644:1585:43","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38420,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"8658:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38426,"nodeType":"IfStatement","src":"8654:45:43","trueBody":{"id":38425,"nodeType":"Block","src":"8666:33:43","statements":[{"expression":{"hexValue":"30","id":38423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":38419,"id":38424,"nodeType":"Return","src":"8680:8:43"}]}},{"assignments":[38428],"declarations":[{"constant":false,"id":38428,"mutability":"mutable","name":"result","nameLocation":"9386:6:43","nodeType":"VariableDeclaration","scope":38523,"src":"9378:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38427,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38437,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":38429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:43","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":38434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":38431,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"9406:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38430,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[38691,38726],"referencedDeclaration":38691,"src":"9401:4:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":38432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38435,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:43"},{"id":38522,"nodeType":"UncheckedBlock","src":"9815:408:43","statements":[{"expression":{"id":38447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38438,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9839:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38439,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9849:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38440,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"9858:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38441,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9862:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38444,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38448,"nodeType":"ExpressionStatement","src":"9839:35:43"},{"expression":{"id":38458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38449,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9888:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38450,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9898:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38451,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"9907:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38452,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9911:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38455,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38459,"nodeType":"ExpressionStatement","src":"9888:35:43"},{"expression":{"id":38469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38460,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9937:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38461,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9947:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38462,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"9956:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38463,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9960:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38466,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38470,"nodeType":"ExpressionStatement","src":"9937:35:43"},{"expression":{"id":38480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38471,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9986:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38472,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"9996:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38473,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"10005:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38474,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10009:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38481,"nodeType":"ExpressionStatement","src":"9986:35:43"},{"expression":{"id":38491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10035:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38483,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10045:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38484,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"10054:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38485,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10058:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38488,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38492,"nodeType":"ExpressionStatement","src":"10035:35:43"},{"expression":{"id":38502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38493,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10084:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38494,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10094:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38495,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"10103:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38496,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10107:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38503,"nodeType":"ExpressionStatement","src":"10084:35:43"},{"expression":{"id":38513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38504,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10133:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38505,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10143:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38506,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"10152:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38507,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10156:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":38510,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38514,"nodeType":"ExpressionStatement","src":"10133:35:43"},{"expression":{"arguments":[{"id":38516,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10193:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38415,"src":"10201:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":38518,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38428,"src":"10205:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38515,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38186,"src":"10189:3:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":38520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38419,"id":38521,"nodeType":"Return","src":"10182:30:43"}]}]},"documentation":{"id":38413,"nodeType":"StructuredDocumentation","src":"8359:223:43","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 Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:43","parameters":{"id":38416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38415,"mutability":"mutable","name":"a","nameLocation":"8609:1:43","nodeType":"VariableDeclaration","scope":38524,"src":"8601:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38414,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:43"},"returnParameters":{"id":38419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38524,"src":"8635:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38417,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38559,"nodeType":"FunctionDefinition","src":"10329:240:43","nodes":[],"body":{"id":38558,"nodeType":"Block","src":"10405:164:43","nodes":[],"statements":[{"id":38557,"nodeType":"UncheckedBlock","src":"10415:148:43","statements":[{"assignments":[38536],"declarations":[{"constant":false,"id":38536,"mutability":"mutable","name":"result","nameLocation":"10447:6:43","nodeType":"VariableDeclaration","scope":38557,"src":"10439:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38535,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38540,"initialValue":{"arguments":[{"id":38538,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"10461:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38537,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[38524,38559],"referencedDeclaration":38524,"src":"10456:4:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":38539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38541,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38536,"src":"10484:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":38550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":38543,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38530,"src":"10511:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}],"id":38542,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39034,"src":"10494:16:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$37992_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":38544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38545,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38536,"src":"10524:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":38546,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38536,"src":"10533:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":38548,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"10542:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":38552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":38553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:43","trueExpression":{"hexValue":"31","id":38551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":38554,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38534,"id":38556,"nodeType":"Return","src":"10477:75:43"}]}]},"documentation":{"id":38525,"nodeType":"StructuredDocumentation","src":"10235:89:43","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:43","parameters":{"id":38531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38527,"mutability":"mutable","name":"a","nameLocation":"10351:1:43","nodeType":"VariableDeclaration","scope":38559,"src":"10343:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38526,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38530,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:43","nodeType":"VariableDeclaration","scope":38559,"src":"10354:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"},"typeName":{"id":38529,"nodeType":"UserDefinedTypeName","pathNode":{"id":38528,"name":"Rounding","nameLocations":["10354:8:43"],"nodeType":"IdentifierPath","referencedDeclaration":37992,"src":"10354:8:43"},"referencedDeclaration":37992,"src":"10354:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:43"},"returnParameters":{"id":38534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38559,"src":"10396:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38532,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38691,"nodeType":"FunctionDefinition","src":"10699:983:43","nodes":[],"body":{"id":38690,"nodeType":"Block","src":"10760:922:43","nodes":[],"statements":[{"assignments":[38568],"declarations":[{"constant":false,"id":38568,"mutability":"mutable","name":"result","nameLocation":"10778:6:43","nodeType":"VariableDeclaration","scope":38690,"src":"10770:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38567,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38570,"initialValue":{"hexValue":"30","id":38569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:43"},{"id":38687,"nodeType":"UncheckedBlock","src":"10798:855:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38571,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"10826:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":38572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:43","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38585,"nodeType":"IfStatement","src":"10822:99:43","trueBody":{"id":38584,"nodeType":"Block","src":"10844:77:43","statements":[{"expression":{"id":38578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"10862:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":38577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:43","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38579,"nodeType":"ExpressionStatement","src":"10862:13:43"},{"expression":{"id":38582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"10893:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":38581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:43","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38583,"nodeType":"ExpressionStatement","src":"10893:13:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38586,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"10938:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":38587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38600,"nodeType":"IfStatement","src":"10934:96:43","trueBody":{"id":38599,"nodeType":"Block","src":"10955:75:43","statements":[{"expression":{"id":38593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38591,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"10973:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":38592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38594,"nodeType":"ExpressionStatement","src":"10973:12:43"},{"expression":{"id":38597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38595,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11003:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":38596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38598,"nodeType":"ExpressionStatement","src":"11003:12:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38601,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11047:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":38602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38615,"nodeType":"IfStatement","src":"11043:96:43","trueBody":{"id":38614,"nodeType":"Block","src":"11064:75:43","statements":[{"expression":{"id":38608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38606,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11082:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":38607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38609,"nodeType":"ExpressionStatement","src":"11082:12:43"},{"expression":{"id":38612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38610,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11112:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":38611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38613,"nodeType":"ExpressionStatement","src":"11112:12:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38616,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11156:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":38617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38630,"nodeType":"IfStatement","src":"11152:96:43","trueBody":{"id":38629,"nodeType":"Block","src":"11173:75:43","statements":[{"expression":{"id":38623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11191:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":38622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38624,"nodeType":"ExpressionStatement","src":"11191:12:43"},{"expression":{"id":38627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38625,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11221:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":38626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38628,"nodeType":"ExpressionStatement","src":"11221:12:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38631,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11265:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":38632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38645,"nodeType":"IfStatement","src":"11261:93:43","trueBody":{"id":38644,"nodeType":"Block","src":"11281:73:43","statements":[{"expression":{"id":38638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38636,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11299:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":38637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38639,"nodeType":"ExpressionStatement","src":"11299:11:43"},{"expression":{"id":38642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38640,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11328:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":38641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38643,"nodeType":"ExpressionStatement","src":"11328:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11371:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":38647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38660,"nodeType":"IfStatement","src":"11367:93:43","trueBody":{"id":38659,"nodeType":"Block","src":"11387:73:43","statements":[{"expression":{"id":38653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38651,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11405:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":38652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38654,"nodeType":"ExpressionStatement","src":"11405:11:43"},{"expression":{"id":38657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38655,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11434:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":38656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38658,"nodeType":"ExpressionStatement","src":"11434:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38661,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11477:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":38662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38675,"nodeType":"IfStatement","src":"11473:93:43","trueBody":{"id":38674,"nodeType":"Block","src":"11493:73:43","statements":[{"expression":{"id":38668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38666,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11511:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":38667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38669,"nodeType":"ExpressionStatement","src":"11511:11:43"},{"expression":{"id":38672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38670,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11540:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":38671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38673,"nodeType":"ExpressionStatement","src":"11540:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38562,"src":"11583:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":38677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38686,"nodeType":"IfStatement","src":"11579:64:43","trueBody":{"id":38685,"nodeType":"Block","src":"11599:44:43","statements":[{"expression":{"id":38683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38681,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11617:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":38682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38684,"nodeType":"ExpressionStatement","src":"11617:11:43"}]}}]},{"expression":{"id":38688,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38568,"src":"11669:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38566,"id":38689,"nodeType":"Return","src":"11662:13:43"}]},"documentation":{"id":38560,"nodeType":"StructuredDocumentation","src":"10575:119:43","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:43","parameters":{"id":38563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38562,"mutability":"mutable","name":"value","nameLocation":"10721:5:43","nodeType":"VariableDeclaration","scope":38691,"src":"10713:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38561,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:43"},"returnParameters":{"id":38566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38691,"src":"10751:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38564,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38726,"nodeType":"FunctionDefinition","src":"11835:248:43","nodes":[],"body":{"id":38725,"nodeType":"Block","src":"11915:168:43","nodes":[],"statements":[{"id":38724,"nodeType":"UncheckedBlock","src":"11925:152:43","statements":[{"assignments":[38703],"declarations":[{"constant":false,"id":38703,"mutability":"mutable","name":"result","nameLocation":"11957:6:43","nodeType":"VariableDeclaration","scope":38724,"src":"11949:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38702,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38707,"initialValue":{"arguments":[{"id":38705,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38694,"src":"11971:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38704,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[38691,38726],"referencedDeclaration":38691,"src":"11966:4:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":38706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38703,"src":"11998:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":38717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":38710,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38697,"src":"12025:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}],"id":38709,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39034,"src":"12008:16:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$37992_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":38711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":38712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":38713,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38703,"src":"12043:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":38715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38694,"src":"12052:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":38719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":38720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:43","trueExpression":{"hexValue":"31","id":38718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":38721,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38701,"id":38723,"nodeType":"Return","src":"11991:75:43"}]}]},"documentation":{"id":38692,"nodeType":"StructuredDocumentation","src":"11688:142:43","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:43","parameters":{"id":38698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38694,"mutability":"mutable","name":"value","nameLocation":"11857:5:43","nodeType":"VariableDeclaration","scope":38726,"src":"11849:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38693,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38697,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:43","nodeType":"VariableDeclaration","scope":38726,"src":"11864:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"},"typeName":{"id":38696,"nodeType":"UserDefinedTypeName","pathNode":{"id":38695,"name":"Rounding","nameLocations":["11864:8:43"],"nodeType":"IdentifierPath","referencedDeclaration":37992,"src":"11864:8:43"},"referencedDeclaration":37992,"src":"11864:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:43"},"returnParameters":{"id":38701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38700,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38726,"src":"11906:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38699,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38855,"nodeType":"FunctionDefinition","src":"12214:916:43","nodes":[],"body":{"id":38854,"nodeType":"Block","src":"12276:854:43","nodes":[],"statements":[{"assignments":[38735],"declarations":[{"constant":false,"id":38735,"mutability":"mutable","name":"result","nameLocation":"12294:6:43","nodeType":"VariableDeclaration","scope":38854,"src":"12286:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38734,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38737,"initialValue":{"hexValue":"30","id":38736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:43"},{"id":38851,"nodeType":"UncheckedBlock","src":"12314:787:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38738,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12342:5:43","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":38741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":38740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:43","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38754,"nodeType":"IfStatement","src":"12338:103:43","trueBody":{"id":38753,"nodeType":"Block","src":"12361:80:43","statements":[{"expression":{"id":38747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38743,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12379:5:43","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":38746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":38745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:43","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38748,"nodeType":"ExpressionStatement","src":"12379:17:43"},{"expression":{"id":38751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38749,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"12414:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":38750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38752,"nodeType":"ExpressionStatement","src":"12414:12:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38755,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12458:5:43","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":38758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":38757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:43","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38771,"nodeType":"IfStatement","src":"12454:103:43","trueBody":{"id":38770,"nodeType":"Block","src":"12477:80:43","statements":[{"expression":{"id":38764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38760,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12495:5:43","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":38763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":38762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:43","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38765,"nodeType":"ExpressionStatement","src":"12495:17:43"},{"expression":{"id":38768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38766,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"12530:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":38767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38769,"nodeType":"ExpressionStatement","src":"12530:12:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12574:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":38775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":38774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:43","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38788,"nodeType":"IfStatement","src":"12570:103:43","trueBody":{"id":38787,"nodeType":"Block","src":"12593:80:43","statements":[{"expression":{"id":38781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38777,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12611:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":38780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":38779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:43","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38782,"nodeType":"ExpressionStatement","src":"12611:17:43"},{"expression":{"id":38785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38783,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"12646:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":38784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38786,"nodeType":"ExpressionStatement","src":"12646:12:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12690:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":38792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":38791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:43","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38805,"nodeType":"IfStatement","src":"12686:100:43","trueBody":{"id":38804,"nodeType":"Block","src":"12708:78:43","statements":[{"expression":{"id":38798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12726:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":38797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":38796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:43","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38799,"nodeType":"ExpressionStatement","src":"12726:16:43"},{"expression":{"id":38802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38800,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"12760:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":38801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38803,"nodeType":"ExpressionStatement","src":"12760:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38806,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12803:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":38809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":38808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:43","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38822,"nodeType":"IfStatement","src":"12799:100:43","trueBody":{"id":38821,"nodeType":"Block","src":"12821:78:43","statements":[{"expression":{"id":38815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38811,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12839:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":38814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":38813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:43","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38816,"nodeType":"ExpressionStatement","src":"12839:16:43"},{"expression":{"id":38819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38817,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"12873:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":38818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38820,"nodeType":"ExpressionStatement","src":"12873:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38823,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12916:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":38826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":38825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:43","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38839,"nodeType":"IfStatement","src":"12912:100:43","trueBody":{"id":38838,"nodeType":"Block","src":"12934:78:43","statements":[{"expression":{"id":38832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"12952:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":38831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":38830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:43","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38833,"nodeType":"ExpressionStatement","src":"12952:16:43"},{"expression":{"id":38836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38834,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"12986:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":38835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38837,"nodeType":"ExpressionStatement","src":"12986:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38840,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38729,"src":"13029:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":38843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":38842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38850,"nodeType":"IfStatement","src":"13025:66:43","trueBody":{"id":38849,"nodeType":"Block","src":"13047:44:43","statements":[{"expression":{"id":38847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38845,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"13065:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":38846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38848,"nodeType":"ExpressionStatement","src":"13065:11:43"}]}}]},{"expression":{"id":38852,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38735,"src":"13117:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38733,"id":38853,"nodeType":"Return","src":"13110:13:43"}]},"documentation":{"id":38727,"nodeType":"StructuredDocumentation","src":"12089:120:43","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:43","parameters":{"id":38730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38729,"mutability":"mutable","name":"value","nameLocation":"12237:5:43","nodeType":"VariableDeclaration","scope":38855,"src":"12229:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38728,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:43"},"returnParameters":{"id":38733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38855,"src":"12267:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38731,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38890,"nodeType":"FunctionDefinition","src":"13284:251:43","nodes":[],"body":{"id":38889,"nodeType":"Block","src":"13365:170:43","nodes":[],"statements":[{"id":38888,"nodeType":"UncheckedBlock","src":"13375:154:43","statements":[{"assignments":[38867],"declarations":[{"constant":false,"id":38867,"mutability":"mutable","name":"result","nameLocation":"13407:6:43","nodeType":"VariableDeclaration","scope":38888,"src":"13399:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38866,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38871,"initialValue":{"arguments":[{"id":38869,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38858,"src":"13422:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38868,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[38855,38890],"referencedDeclaration":38855,"src":"13416:5:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":38870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38872,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38867,"src":"13449:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":38881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":38874,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38861,"src":"13476:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}],"id":38873,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39034,"src":"13459:16:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$37992_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":38875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":38876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:43","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":38877,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38867,"src":"13495:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":38879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38858,"src":"13504:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":38883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":38884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:43","trueExpression":{"hexValue":"31","id":38882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":38885,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38865,"id":38887,"nodeType":"Return","src":"13442:76:43"}]}]},"documentation":{"id":38856,"nodeType":"StructuredDocumentation","src":"13136:143:43","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:43","parameters":{"id":38862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38858,"mutability":"mutable","name":"value","nameLocation":"13307:5:43","nodeType":"VariableDeclaration","scope":38890,"src":"13299:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38857,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38861,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:43","nodeType":"VariableDeclaration","scope":38890,"src":"13314:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"},"typeName":{"id":38860,"nodeType":"UserDefinedTypeName","pathNode":{"id":38859,"name":"Rounding","nameLocations":["13314:8:43"],"nodeType":"IdentifierPath","referencedDeclaration":37992,"src":"13314:8:43"},"referencedDeclaration":37992,"src":"13314:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:43"},"returnParameters":{"id":38865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38864,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38890,"src":"13356:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38863,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":38977,"nodeType":"FunctionDefinition","src":"13792:663:43","nodes":[],"body":{"id":38976,"nodeType":"Block","src":"13855:600:43","nodes":[],"statements":[{"assignments":[38899],"declarations":[{"constant":false,"id":38899,"mutability":"mutable","name":"result","nameLocation":"13873:6:43","nodeType":"VariableDeclaration","scope":38976,"src":"13865:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38898,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38901,"initialValue":{"hexValue":"30","id":38900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:43"},{"id":38973,"nodeType":"UncheckedBlock","src":"13893:533:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38902,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"13921:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":38903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:43","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38916,"nodeType":"IfStatement","src":"13917:98:43","trueBody":{"id":38915,"nodeType":"Block","src":"13939:76:43","statements":[{"expression":{"id":38909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"13957:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":38908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:43","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38910,"nodeType":"ExpressionStatement","src":"13957:13:43"},{"expression":{"id":38913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38911,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38899,"src":"13988:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":38912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38914,"nodeType":"ExpressionStatement","src":"13988:12:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38917,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"14032:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":38918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38931,"nodeType":"IfStatement","src":"14028:95:43","trueBody":{"id":38930,"nodeType":"Block","src":"14049:74:43","statements":[{"expression":{"id":38924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"14067:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":38923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38925,"nodeType":"ExpressionStatement","src":"14067:12:43"},{"expression":{"id":38928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38926,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38899,"src":"14097:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":38927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38929,"nodeType":"ExpressionStatement","src":"14097:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"14140:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":38933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38946,"nodeType":"IfStatement","src":"14136:95:43","trueBody":{"id":38945,"nodeType":"Block","src":"14157:74:43","statements":[{"expression":{"id":38939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38937,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"14175:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":38938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38940,"nodeType":"ExpressionStatement","src":"14175:12:43"},{"expression":{"id":38943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38941,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38899,"src":"14205:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":38942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38944,"nodeType":"ExpressionStatement","src":"14205:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"14248:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":38948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38961,"nodeType":"IfStatement","src":"14244:95:43","trueBody":{"id":38960,"nodeType":"Block","src":"14265:74:43","statements":[{"expression":{"id":38954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38952,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"14283:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":38953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38955,"nodeType":"ExpressionStatement","src":"14283:12:43"},{"expression":{"id":38958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38956,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38899,"src":"14313:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":38957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38959,"nodeType":"ExpressionStatement","src":"14313:11:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38893,"src":"14356:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":38963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38972,"nodeType":"IfStatement","src":"14352:64:43","trueBody":{"id":38971,"nodeType":"Block","src":"14372:44:43","statements":[{"expression":{"id":38969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38967,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38899,"src":"14390:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":38968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38970,"nodeType":"ExpressionStatement","src":"14390:11:43"}]}}]},{"expression":{"id":38974,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38899,"src":"14442:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38897,"id":38975,"nodeType":"Return","src":"14435:13:43"}]},"documentation":{"id":38891,"nodeType":"StructuredDocumentation","src":"13541:246:43","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."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:43","parameters":{"id":38894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38893,"mutability":"mutable","name":"value","nameLocation":"13816:5:43","nodeType":"VariableDeclaration","scope":38977,"src":"13808:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38892,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:43"},"returnParameters":{"id":38897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38977,"src":"13846:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38895,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":39015,"nodeType":"FunctionDefinition","src":"14610:259:43","nodes":[],"body":{"id":39014,"nodeType":"Block","src":"14692:177:43","nodes":[],"statements":[{"id":39013,"nodeType":"UncheckedBlock","src":"14702:161:43","statements":[{"assignments":[38989],"declarations":[{"constant":false,"id":38989,"mutability":"mutable","name":"result","nameLocation":"14734:6:43","nodeType":"VariableDeclaration","scope":39013,"src":"14726:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38988,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38993,"initialValue":{"arguments":[{"id":38991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38980,"src":"14750:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38990,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[38977,39015],"referencedDeclaration":38977,"src":"14743:6:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":38992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38994,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38989,"src":"14777:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":39006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":38996,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38983,"src":"14804:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}],"id":38995,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39034,"src":"14787:16:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$37992_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":38997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":38998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:43","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":39001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38999,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38989,"src":"14823:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":39000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:43","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":39002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":39004,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38980,"src":"14838:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":39008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":39009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:43","trueExpression":{"hexValue":"31","id":39007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":39010,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38987,"id":39012,"nodeType":"Return","src":"14770:82:43"}]}]},"documentation":{"id":38978,"nodeType":"StructuredDocumentation","src":"14461:144:43","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:43","parameters":{"id":38984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38980,"mutability":"mutable","name":"value","nameLocation":"14634:5:43","nodeType":"VariableDeclaration","scope":39015,"src":"14626:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38979,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38983,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:43","nodeType":"VariableDeclaration","scope":39015,"src":"14641:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"},"typeName":{"id":38982,"nodeType":"UserDefinedTypeName","pathNode":{"id":38981,"name":"Rounding","nameLocations":["14641:8:43"],"nodeType":"IdentifierPath","referencedDeclaration":37992,"src":"14641:8:43"},"referencedDeclaration":37992,"src":"14641:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:43"},"returnParameters":{"id":38987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39015,"src":"14683:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38985,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":39034,"nodeType":"FunctionDefinition","src":"14993:122:43","nodes":[],"body":{"id":39033,"nodeType":"Block","src":"15067:48:43","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":39031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":39029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":39026,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39019,"src":"15090:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}],"id":39025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":39024,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:43","typeDescriptions":{}}},"id":39027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":39028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":39030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":39023,"id":39032,"nodeType":"Return","src":"15077:31:43"}]},"documentation":{"id":39016,"nodeType":"StructuredDocumentation","src":"14875:113:43","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:43","parameters":{"id":39020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39019,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:43","nodeType":"VariableDeclaration","scope":39034,"src":"15019:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"},"typeName":{"id":39018,"nodeType":"UserDefinedTypeName","pathNode":{"id":39017,"name":"Rounding","nameLocations":["15019:8:43"],"nodeType":"IdentifierPath","referencedDeclaration":37992,"src":"15019:8:43"},"referencedDeclaration":37992,"src":"15019:8:43","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$37992","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:43"},"returnParameters":{"id":39023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39034,"src":"15061:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39021,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:43"},"scope":39035,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":37984,"nodeType":"StructuredDocumentation","src":"129:73:43","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[39035],"name":"Math","nameLocation":"211:4:43","scope":39036,"usedErrors":[37987],"usedEvents":[]}],"license":"MIT"},"id":43}