{"abi":[],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50601680601d6000396000f3fe6080604052600080fdfea164736f6c634300080f000a","sourceMap":"199:1374:88:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600080fdfea164736f6c634300080f000a","sourceMap":"199:1374:88:-:0;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - <richard@gnosis.pm>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SignatureDecoder - Decodes signatures that a encoded as bytes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe-contracts/contracts/common/SignatureDecoder.sol\":\"SignatureDecoder\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/safe-contracts/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2d37be182472ccfee62a33e9939f9b3d509be4c32e9fdebc2c1746c573655987\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f76d96f10640beee7d4b4ad119bd3c64aeb26929011d9c1eec738c63ebc92f63\",\"dweb:/ipfs/QmaqgDocQumKeyUMgZU7STzpTASQjDbUxbQKuZ17xhLaXz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"lib/safe-contracts/contracts/common/SignatureDecoder.sol":"SignatureDecoder"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"lib/safe-contracts/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2d37be182472ccfee62a33e9939f9b3d509be4c32e9fdebc2c1746c573655987","urls":["bzz-raw://f76d96f10640beee7d4b4ad119bd3c64aeb26929011d9c1eec738c63ebc92f63","dweb:/ipfs/QmaqgDocQumKeyUMgZU7STzpTASQjDbUxbQKuZ17xhLaXz"],"license":"LGPL-3.0-only"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","author":"Richard Meissner - <richard@gnosis.pm>","title":"SignatureDecoder - Decodes signatures that a encoded as bytes"},"ast":{"absolutePath":"lib/safe-contracts/contracts/common/SignatureDecoder.sol","id":60211,"exportedSymbols":{"SignatureDecoder":[60210]},"nodeType":"SourceUnit","src":"42:1532:88","nodes":[{"id":60192,"nodeType":"PragmaDirective","src":"42:31:88","nodes":[],"literals":["solidity",">=","0.7",".0","<","0.9",".0"]},{"id":60210,"nodeType":"ContractDefinition","src":"199:1374:88","nodes":[{"id":60209,"nodeType":"FunctionDefinition","src":"612:959:88","nodes":[],"body":{"id":60208,"nodeType":"Block","src":"802:769:88","nodes":[],"statements":[{"AST":{"nodeType":"YulBlock","src":"1035:530:88","statements":[{"nodeType":"YulVariableDeclaration","src":"1049:34:88","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1073:4:88","type":"","value":"0x41"},{"name":"pos","nodeType":"YulIdentifier","src":"1079:3:88"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1069:3:88"},"nodeType":"YulFunctionCall","src":"1069:14:88"},"variables":[{"name":"signaturePos","nodeType":"YulTypedName","src":"1053:12:88","type":""}]},{"nodeType":"YulAssignment","src":"1096:52:88","value":{"arguments":[{"arguments":[{"name":"signatures","nodeType":"YulIdentifier","src":"1111:10:88"},{"arguments":[{"name":"signaturePos","nodeType":"YulIdentifier","src":"1127:12:88"},{"kind":"number","nodeType":"YulLiteral","src":"1141:4:88","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1123:3:88"},"nodeType":"YulFunctionCall","src":"1123:23:88"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1107:3:88"},"nodeType":"YulFunctionCall","src":"1107:40:88"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1101:5:88"},"nodeType":"YulFunctionCall","src":"1101:47:88"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"1096:1:88"}]},{"nodeType":"YulAssignment","src":"1161:52:88","value":{"arguments":[{"arguments":[{"name":"signatures","nodeType":"YulIdentifier","src":"1176:10:88"},{"arguments":[{"name":"signaturePos","nodeType":"YulIdentifier","src":"1192:12:88"},{"kind":"number","nodeType":"YulLiteral","src":"1206:4:88","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1188:3:88"},"nodeType":"YulFunctionCall","src":"1188:23:88"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1172:3:88"},"nodeType":"YulFunctionCall","src":"1172:40:88"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1166:5:88"},"nodeType":"YulFunctionCall","src":"1166:47:88"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"1161:1:88"}]},{"nodeType":"YulAssignment","src":"1492:63:88","value":{"arguments":[{"arguments":[{"arguments":[{"name":"signatures","nodeType":"YulIdentifier","src":"1511:10:88"},{"arguments":[{"name":"signaturePos","nodeType":"YulIdentifier","src":"1527:12:88"},{"kind":"number","nodeType":"YulLiteral","src":"1541:4:88","type":"","value":"0x41"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1523:3:88"},"nodeType":"YulFunctionCall","src":"1523:23:88"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1507:3:88"},"nodeType":"YulFunctionCall","src":"1507:40:88"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1501:5:88"},"nodeType":"YulFunctionCall","src":"1501:47:88"},{"kind":"number","nodeType":"YulLiteral","src":"1550:4:88","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1497:3:88"},"nodeType":"YulFunctionCall","src":"1497:58:88"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"1492:1:88"}]}]},"evmVersion":"london","externalReferences":[{"declaration":60198,"isOffset":false,"isSlot":false,"src":"1079:3:88","valueSize":1},{"declaration":60203,"isOffset":false,"isSlot":false,"src":"1096:1:88","valueSize":1},{"declaration":60205,"isOffset":false,"isSlot":false,"src":"1161:1:88","valueSize":1},{"declaration":60196,"isOffset":false,"isSlot":false,"src":"1111:10:88","valueSize":1},{"declaration":60196,"isOffset":false,"isSlot":false,"src":"1176:10:88","valueSize":1},{"declaration":60196,"isOffset":false,"isSlot":false,"src":"1511:10:88","valueSize":1},{"declaration":60201,"isOffset":false,"isSlot":false,"src":"1492:1:88","valueSize":1}],"id":60207,"nodeType":"InlineAssembly","src":"1026:539:88"}]},"documentation":{"id":60194,"nodeType":"StructuredDocumentation","src":"231:376:88","text":"@dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`.\n @notice Make sure to peform a bounds check for @param pos, to avoid out of bounds access on @param signatures\n @param pos which signature to read. A prior bounds check of this parameter should be performed, to avoid out of bounds access\n @param signatures concatenated rsv signatures"},"implemented":true,"kind":"function","modifiers":[],"name":"signatureSplit","nameLocation":"621:14:88","parameters":{"id":60199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60196,"mutability":"mutable","name":"signatures","nameLocation":"649:10:88","nodeType":"VariableDeclaration","scope":60209,"src":"636:23:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60195,"name":"bytes","nodeType":"ElementaryTypeName","src":"636:5:88","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60198,"mutability":"mutable","name":"pos","nameLocation":"669:3:88","nodeType":"VariableDeclaration","scope":60209,"src":"661:11:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60197,"name":"uint256","nodeType":"ElementaryTypeName","src":"661:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:38:88"},"returnParameters":{"id":60206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60201,"mutability":"mutable","name":"v","nameLocation":"740:1:88","nodeType":"VariableDeclaration","scope":60209,"src":"734:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":60200,"name":"uint8","nodeType":"ElementaryTypeName","src":"734:5:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":60203,"mutability":"mutable","name":"r","nameLocation":"763:1:88","nodeType":"VariableDeclaration","scope":60209,"src":"755:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60202,"name":"bytes32","nodeType":"ElementaryTypeName","src":"755:7:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":60205,"mutability":"mutable","name":"s","nameLocation":"786:1:88","nodeType":"VariableDeclaration","scope":60209,"src":"778:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"778:7:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"720:77:88"},"scope":60210,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignatureDecoder","contractDependencies":[],"contractKind":"contract","documentation":{"id":60193,"nodeType":"StructuredDocumentation","src":"75:124:88","text":"@title SignatureDecoder - Decodes signatures that a encoded as bytes\n @author Richard Meissner - <richard@gnosis.pm>"},"fullyImplemented":true,"linearizedBaseContracts":[60210],"name":"SignatureDecoder","nameLocation":"208:16:88","scope":60211,"usedErrors":[]}],"license":"LGPL-3.0-only"},"id":88}