{
  "id": "4f9440014c655a3584c0f1021b9198c2",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.10",
  "solcLongVersion": "0.6.10+commit.00c0fcaf",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/mocks/ForceFunderMock.sol": {
        "content": "/*\n    Copyright 2020 Set Labs Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n    SPDX-License-Identifier: Apache License, Version 2.0\n*/\n\npragma solidity 0.6.10;\n\n\ncontract ForceFunderMock  {\n    /**\n     * Convenience method for depositing eth into non-payable contracts\n     * which the forked provider tests would like to impersonate\n     * as a message sender.\n     *\n     * @param  destination   destination of eth payment\n     */\n    function fund(address destination) public payable {\n        selfdestruct(payable(address(destination)));\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/mocks/ForceFunderMock.sol": {
        "ForceFunderMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "destination",
                  "type": "address"
                }
              ],
              "name": "fund",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b5060888061001e6000396000f3fe608060405260043610601c5760003560e01c806323024408146021575b600080fd5b604460048036036020811015603557600080fd5b50356001600160a01b03166046565b005b806001600160a01b0316fffea2646970667358221220cdb7aeb56523c5394cc8ee1cb71debcf2f13a6f4e82000ae13994a0dc32908d164736f6c634300060a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x88 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x23024408 EQ PUSH1 0x21 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x44 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x46 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFDESTRUCT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD 0xB7 0xAE 0xB5 PUSH6 0x23C5394CC8EE SHR 0xB7 SAR 0xEB 0xCF 0x2F SGT 0xA6 DELEGATECALL 0xE8 KECCAK256 STOP 0xAE SGT SWAP10 0x4A 0xD 0xC3 0x29 ADDMOD 0xD1 PUSH5 0x736F6C6343 STOP MOD EXP STOP CALLER ",
              "sourceMap": "681:388:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405260043610601c5760003560e01c806323024408146021575b600080fd5b604460048036036020811015603557600080fd5b50356001600160a01b03166046565b005b806001600160a01b0316fffea2646970667358221220cdb7aeb56523c5394cc8ee1cb71debcf2f13a6f4e82000ae13994a0dc32908d164736f6c634300060a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x23024408 EQ PUSH1 0x21 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x44 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x46 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFDESTRUCT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD 0xB7 0xAE 0xB5 PUSH6 0x23C5394CC8EE SHR 0xB7 SAR 0xEB 0xCF 0x2F SGT 0xA6 DELEGATECALL 0xE8 KECCAK256 STOP 0xAE SGT SWAP10 0x4A 0xD 0xC3 0x29 ADDMOD 0xD1 PUSH5 0x736F6C6343 STOP MOD EXP STOP CALLER ",
              "sourceMap": "681:388:0:-:0;;;;;;;;;;;;;;;;;;;;;957:110;;;;;;;;;;;;;;;;-1:-1:-1;957:110:0;-1:-1:-1;;;;;957:110:0;;:::i;:::-;;;1046:11;-1:-1:-1;;;;;1017:43:0;"
            },
            "methodIdentifiers": {
              "fund(address)": "23024408"
            }
          }
        }
      }
    },
    "sources": {
      "contracts/mocks/ForceFunderMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ForceFunderMock.sol",
          "exportedSymbols": {
            "ForceFunderMock": [
              19
            ]
          },
          "id": 20,
          "license": "Apache License",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.6",
                ".10"
              ],
              "nodeType": "PragmaDirective",
              "src": "655:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 19,
              "linearizedBaseContracts": [
                19
              ],
              "name": "ForceFunderMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 17,
                    "nodeType": "Block",
                    "src": "1007:60:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12,
                                      "name": "destination",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4,
                                      "src": "1046:11:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1038:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 10,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1038:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 13,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1038:20:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1030:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 8,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1030:8:0",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 14,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1030:29:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 7,
                            "name": "selfdestruct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -21,
                            "src": "1017:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$",
                              "typeString": "function (address payable)"
                            }
                          },
                          "id": 15,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1017:43:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16,
                        "nodeType": "ExpressionStatement",
                        "src": "1017:43:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2,
                    "nodeType": "StructuredDocumentation",
                    "src": "713:239:0",
                    "text": " Convenience method for depositing eth into non-payable contracts\n which the forked provider tests would like to impersonate\n as a message sender.\n @param  destination   destination of eth payment"
                  },
                  "functionSelector": "23024408",
                  "id": 18,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fund",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4,
                        "mutability": "mutable",
                        "name": "destination",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18,
                        "src": "971:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "971:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "970:21:0"
                  },
                  "returnParameters": {
                    "id": 6,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1007:0:0"
                  },
                  "scope": 19,
                  "src": "957:110:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 20,
              "src": "681:388:0"
            }
          ],
          "src": "655:415:0"
        },
        "id": 0
      }
    }
  }
}
