{
  "contractName": "FallbackManager",
  "sourceName": "@gnosis.pm/safe-contracts/contracts/base/FallbackManager.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "handler",
          "type": "address"
        }
      ],
      "name": "ChangedFallbackHandler",
      "type": "event"
    },
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handler",
          "type": "address"
        }
      ],
      "name": "setFallbackHandler",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506101ab806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f08a032314610084575b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061005557005b36600080373360601b365260008060143601600080855af190503d6000803e8061007e573d6000fd5b503d6000f35b610097610092366004610145565b610099565b005b6100a1610108565b6100c9817f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b6040516001600160a01b03821681527f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b09060200160405180910390a150565b3330146101435760405162461bcd60e51b8152602060048201526005602482015264475330333160d81b604482015260640160405180910390fd5b565b60006020828403121561015757600080fd5b81356001600160a01b038116811461016e57600080fd5b939250505056fea26469706673582212201bf927fcddbca61a6bab3ffad62b813b2488c37986cc7af41368bbea437cc4e064736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f08a032314610084575b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061005557005b36600080373360601b365260008060143601600080855af190503d6000803e8061007e573d6000fd5b503d6000f35b610097610092366004610145565b610099565b005b6100a1610108565b6100c9817f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b6040516001600160a01b03821681527f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b09060200160405180910390a150565b3330146101435760405162461bcd60e51b8152602060048201526005602482015264475330333160d81b604482015260640160405180910390fd5b565b60006020828403121561015757600080fd5b81356001600160a01b038116811461016e57600080fd5b939250505056fea26469706673582212201bf927fcddbca61a6bab3ffad62b813b2488c37986cc7af41368bbea437cc4e064736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "devdoc": {
    "author": "Richard Meissner - <richard@gnosis.pm>",
    "kind": "dev",
    "methods": {
      "setFallbackHandler(address)": {
        "details": "Allows to add a contract to handle fallback calls.      Only fallback calls without value and with data will be forwarded.      This can only be done via a Safe transaction.",
        "params": {
          "handler": "contract to handle fallbacks calls."
        }
      }
    },
    "title": "Fallback Manager - A contract that manages fallback calls made to this contract",
    "version": 1
  },
  "evm": {
    "bytecode": {
      "functionDebugData": {},
      "generatedSources": [],
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AB DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF08A0323 EQ PUSH2 0x84 JUMPI JUMPDEST PUSH32 0x6C9A6C4A39284E37ED1CF53D337577D14212A4870FB976A4366C693B939918D5 DUP1 SLOAD DUP1 PUSH2 0x55 JUMPI STOP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY CALLER PUSH1 0x60 SHL CALLDATASIZE MSTORE PUSH1 0x0 DUP1 PUSH1 0x14 CALLDATASIZE ADD PUSH1 0x0 DUP1 DUP6 GAS CALL SWAP1 POP RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 PUSH2 0x7E JUMPI RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST PUSH2 0x97 PUSH2 0x92 CALLDATASIZE PUSH1 0x4 PUSH2 0x145 JUMP JUMPDEST PUSH2 0x99 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA1 PUSH2 0x108 JUMP JUMPDEST PUSH2 0xC9 DUP2 PUSH32 0x6C9A6C4A39284E37ED1CF53D337577D14212A4870FB976A4366C693B939918D5 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE PUSH32 0x5AC6C46C93C8D0E53714BA3B53DB3E7C046DA994313D7ED0D192028BC7C228B0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x143 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753303331 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xF9 0x27 0xFC 0xDD 0xBC 0xA6 BYTE PUSH12 0xAB3FFAD62B813B2488C37986 0xCC PUSH27 0xF41368BBEA437CC4E064736F6C634300080A003300000000000000 ",
      "sourceMap": "257:1926:2:-:0;;;;;;;;;;;;;;;;;;;"
    },
    "deployedBytecode": {
      "functionDebugData": {
        "@_1034": {
          "entryPoint": null,
          "id": 1034,
          "parameterSlots": 0,
          "returnSlots": 0
        },
        "@internalSetFallbackHandler_1008": {
          "entryPoint": null,
          "id": 1008,
          "parameterSlots": 1,
          "returnSlots": 0
        },
        "@requireSelfCall_2065": {
          "entryPoint": 264,
          "id": 2065,
          "parameterSlots": 0,
          "returnSlots": 0
        },
        "@setFallbackHandler_1025": {
          "entryPoint": 153,
          "id": 1025,
          "parameterSlots": 1,
          "returnSlots": 0
        },
        "abi_decode_tuple_t_address": {
          "entryPoint": 325,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_b7248be3e8887f14d79f63d350787adcdb5e12b47898ebd6ef2aacf660fc9f17__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        }
      },
      "generatedSources": [
        {
          "ast": {
            "nodeType": "YulBlock",
            "src": "0:843:86",
            "statements": [
              {
                "nodeType": "YulBlock",
                "src": "6:3:86",
                "statements": []
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "84:216:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "130:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "139:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "142:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "132:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "132:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "132:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "105:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "114:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "101:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "101:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "126:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "97:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "97:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "94:52:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "155:36:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "181:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "168:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "168:23:86"
                      },
                      "variables": [
                        {
                          "name": "value",
                          "nodeType": "YulTypedName",
                          "src": "159:5:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "254:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "263:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "266:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "256:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "256:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "256:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "213:5:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "224:5:86"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "239:3:86",
                                            "type": "",
                                            "value": "160"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "244:1:86",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "235:3:86"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "235:11:86"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "248:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "231:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "231:19:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "220:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "220:31:86"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nodeType": "YulIdentifier",
                              "src": "210:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "210:42:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "203:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "203:50:86"
                      },
                      "nodeType": "YulIf",
                      "src": "200:70:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "279:15:86",
                      "value": {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "289:5:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "279:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_address",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "50:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "61:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "73:6:86",
                    "type": ""
                  }
                ],
                "src": "14:286:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "406:102:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "416:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "428:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "439:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "424:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "424:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "416:4:86"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "458:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "473:6:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "489:3:86",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "494:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "485:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "485:11:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "498:1:86",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "481:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "481:19:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "469:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "469:32:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "451:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "451:51:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "451:51:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "375:9:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "386:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "397:4:86",
                    "type": ""
                  }
                ],
                "src": "305:203:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "687:154:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "704:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "715:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "697:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "697:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "697:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "738:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "749:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "734:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "734:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "754:1:86",
                            "type": "",
                            "value": "5"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "727:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "727:29:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "727:29:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "776:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "787:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "772:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "772:18:86"
                          },
                          {
                            "hexValue": "4753303331",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "792:7:86",
                            "type": "",
                            "value": "GS031"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "765:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "765:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "765:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "809:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "821:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "832:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "817:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "817:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "809:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_b7248be3e8887f14d79f63d350787adcdb5e12b47898ebd6ef2aacf660fc9f17__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "664:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "678:4:86",
                    "type": ""
                  }
                ],
                "src": "513:328:86"
              }
            ]
          },
          "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_b7248be3e8887f14d79f63d350787adcdb5e12b47898ebd6ef2aacf660fc9f17__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 5)\n        mstore(add(headStart, 64), \"GS031\")\n        tail := add(headStart, 96)\n    }\n}",
          "id": 86,
          "language": "Yul",
          "name": "#utility.yul"
        }
      ],
      "immutableReferences": {},
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF08A0323 EQ PUSH2 0x84 JUMPI JUMPDEST PUSH32 0x6C9A6C4A39284E37ED1CF53D337577D14212A4870FB976A4366C693B939918D5 DUP1 SLOAD DUP1 PUSH2 0x55 JUMPI STOP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY CALLER PUSH1 0x60 SHL CALLDATASIZE MSTORE PUSH1 0x0 DUP1 PUSH1 0x14 CALLDATASIZE ADD PUSH1 0x0 DUP1 DUP6 GAS CALL SWAP1 POP RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 PUSH2 0x7E JUMPI RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST PUSH2 0x97 PUSH2 0x92 CALLDATASIZE PUSH1 0x4 PUSH2 0x145 JUMP JUMPDEST PUSH2 0x99 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA1 PUSH2 0x108 JUMP JUMPDEST PUSH2 0xC9 DUP2 PUSH32 0x6C9A6C4A39284E37ED1CF53D337577D14212A4870FB976A4366C693B939918D5 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE PUSH32 0x5AC6C46C93C8D0E53714BA3B53DB3E7C046DA994313D7ED0D192028BC7C228B0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x143 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753303331 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xF9 0x27 0xFC 0xDD 0xBC 0xA6 BYTE PUSH12 0xAB3FFAD62B813B2488C37986 0xCC PUSH27 0xF41368BBEA437CC4E064736F6C634300080A003300000000000000 ",
      "sourceMap": "257:1926:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;469:66;1467:11;;;1491:63;;1528:12;1491:63;1586:14;1583:1;1580;1567:34;1823:8;1819:2;1815:17;1799:14;1792:41;1981:1;1978;1973:2;1957:14;1953:23;1950:1;1947;1938:7;1931:5;1926:57;1911:72;;2017:16;2014:1;2011;1996:38;2057:7;2047:78;;2094:16;2091:1;2084:27;2047:78;;2148:16;2145:1;2138:27;1052:161;;;;;;:::i;:::-;;:::i;:::-;;;440:17:9;:15;:17::i;:::-;1125:35:2::1;1152:7;469:66:::0;747:21;542:242;1125:35:::1;1175:31;::::0;-1:-1:-1;;;;;469:32:86;;451:51;;1175:31:2::1;::::0;439:2:86;424:18;1175:31:2::1;;;;;;;1052:161:::0;:::o;231:102:9:-;289:10;311:4;289:27;281:45;;;;-1:-1:-1;;;281:45:9;;715:2:86;281:45:9;;;697:21:86;754:1;734:18;;;727:29;-1:-1:-1;;;772:18:86;;;765:35;817:18;;281:45:9;;;;;;;;231:102::o;14:286:86:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:86;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:86:o"
    },
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "85400",
        "executionCost": "135",
        "totalCost": "85535"
      },
      "external": {
        "": "infinite",
        "setFallbackHandler(address)": "23485"
      },
      "internal": {
        "internalSetFallbackHandler(address)": "infinite"
      }
    },
    "methodIdentifiers": {
      "setFallbackHandler(address)": "f08a0323"
    }
  },
  "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"}],\"name\":\"ChangedFallbackHandler\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"}],\"name\":\"setFallbackHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Richard Meissner - <richard@gnosis.pm>\",\"kind\":\"dev\",\"methods\":{\"setFallbackHandler(address)\":{\"details\":\"Allows to add a contract to handle fallback calls.      Only fallback calls without value and with data will be forwarded.      This can only be done via a Safe transaction.\",\"params\":{\"handler\":\"contract to handle fallbacks calls.\"}}},\"title\":\"Fallback Manager - A contract that manages fallback calls made to this contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@gnosis.pm/safe-contracts/contracts/base/FallbackManager.sol\":\"FallbackManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/safe-contracts/contracts/base/FallbackManager.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\nimport \\\"../common/SelfAuthorized.sol\\\";\\n\\n/// @title Fallback Manager - A contract that manages fallback calls made to this contract\\n/// @author Richard Meissner - <richard@gnosis.pm>\\ncontract FallbackManager is SelfAuthorized {\\n    event ChangedFallbackHandler(address handler);\\n\\n    // keccak256(\\\"fallback_manager.handler.address\\\")\\n    bytes32 internal constant FALLBACK_HANDLER_STORAGE_SLOT = 0x6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d5;\\n\\n    function internalSetFallbackHandler(address handler) internal {\\n        bytes32 slot = FALLBACK_HANDLER_STORAGE_SLOT;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            sstore(slot, handler)\\n        }\\n    }\\n\\n    /// @dev Allows to add a contract to handle fallback calls.\\n    ///      Only fallback calls without value and with data will be forwarded.\\n    ///      This can only be done via a Safe transaction.\\n    /// @param handler contract to handle fallbacks calls.\\n    function setFallbackHandler(address handler) public authorized {\\n        internalSetFallbackHandler(handler);\\n        emit ChangedFallbackHandler(handler);\\n    }\\n\\n    // solhint-disable-next-line payable-fallback,no-complex-fallback\\n    fallback() external {\\n        bytes32 slot = FALLBACK_HANDLER_STORAGE_SLOT;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            let handler := sload(slot)\\n            if iszero(handler) {\\n                return(0, 0)\\n            }\\n            calldatacopy(0, 0, calldatasize())\\n            // The msg.sender address is shifted to the left by 12 bytes to remove the padding\\n            // Then the address without padding is stored right after the calldata\\n            mstore(calldatasize(), shl(96, caller()))\\n            // Add 20 bytes for the address appended add the end\\n            let success := call(gas(), handler, 0, 0, add(calldatasize(), 20), 0, 0)\\n            returndatacopy(0, 0, returndatasize())\\n            if iszero(success) {\\n                revert(0, returndatasize())\\n            }\\n            return(0, returndatasize())\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x1be9f0f3e80a78134c2e3a026c6a14759785bd35d135e87a4a025aeb6742791f\",\"license\":\"LGPL-3.0-only\"},\"@gnosis.pm/safe-contracts/contracts/common/SelfAuthorized.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\n/// @title SelfAuthorized - authorizes current contract to perform actions\\n/// @author Richard Meissner - <richard@gnosis.pm>\\ncontract SelfAuthorized {\\n    function requireSelfCall() private view {\\n        require(msg.sender == address(this), \\\"GS031\\\");\\n    }\\n\\n    modifier authorized() {\\n        // This is a function call as it minimized the bytecode size\\n        requireSelfCall();\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x59d36efca578b75541a776f62a0d0ef03712fc27b6647c3915c14b572106d7bc\",\"license\":\"LGPL-3.0-only\"}},\"version\":1}",
  "storageLayout": {
    "storage": [],
    "types": null
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}