hardlydifficult-ethereum-contracts
Version:
A collection of reusable contracts and Javascript helpers for Ethereum.
1,082 lines • 87.8 kB
JSON
{
"contractName": "CloneFactoryMock",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "proxyAddress",
"type": "address"
}
],
"name": "CloneCreated",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "createClone",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "createClone2",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "isAddressAvailable",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "getClone2Address",
"outputs": [
{
"internalType": "address",
"name": "cloneAddress",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxyAddress\",\"type\":\"address\"}],\"name\":\"CloneCreated\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"createClone\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"createClone2\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getClone2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"cloneAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"isAddressAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol\":\"CloneFactoryMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":2000000},\"remappings\":[]},\"sources\":{\"/home/circleci/repo/contracts/proxies/Clone2Factory.sol\":{\"keccak256\":\"0x20ad3c3465defae97e35187a1f74bbdfcfa5ef493d79cca00e5692fed6feeec1\",\"urls\":[\"bzz-raw://6ffd068b3b4761476990d58d23ae546eec0103fb2e5f896c31303a08d4c39c92\",\"dweb:/ipfs/QmSNL1DVqb5WX4eW4DXkuTEMYsccwkVdXb14L2SKp7Utzf\"]},\"/home/circleci/repo/contracts/proxies/Clone2Probe.sol\":{\"keccak256\":\"0x8deae8274c8fe85a34c589216b3f4081a449da2190ee5601cd38a9c53af0afa1\",\"urls\":[\"bzz-raw://86372d82fbdc52a99737977d150962365ed19052742244269f1b0322b44a7c0b\",\"dweb:/ipfs/Qmc1vGbFSoc3ssuH1Ejef2YmBdNjcCdLRZJrNJQbQb9Yv2\"]},\"/home/circleci/repo/contracts/proxies/CloneFactory.sol\":{\"keccak256\":\"0xb23450ec646fe4c1417ed869683a2020f0f83b02263e452eeb17a9e86f713389\",\"urls\":[\"bzz-raw://30c056fd32bffd39f6e63604b08bccca45dadd2ef1597efeb328ac4094d6f342\",\"dweb:/ipfs/Qmey1PvM58jNRH4yyWUjnNci7H1TA6DzpKEtEgy5BEmydq\"]},\"/home/circleci/repo/contracts/proxies/Create2Probe.sol\":{\"keccak256\":\"0xe15113008fd3548e20228b0f1f33d51650a3e92e3c83423c4511525a926fc053\",\"urls\":[\"bzz-raw://0a49c2e5cd0aa4fdc4a07a89ba400108fa44d9a2f8689a8d2d9ec39a42ede36f\",\"dweb:/ipfs/QmeZywNZFB8b56ycbdqYJgMdYgg6bKbS2f4AwcSUjif3TX\"]},\"/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol\":{\"keccak256\":\"0x967d230e8865dad7a6e1e9b50507ccc765654e4ef96524c432091fab844cbfc4\",\"urls\":[\"bzz-raw://f94140f276f667c471b4001452aac3ad58485133d8115ccd7b0642774f7b438d\",\"dweb:/ipfs/QmPQmMebmzioKFSQbTn8V5FDA8pywjH8XbuVGFZx5yfvxN\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50610561806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063321660e41461005157806357894c1b1461008c5780639789e5bf146100bf578063dda1670f14610121575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610168565b005b61008a600480360360208110156100a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101e2565b6100f8600480360360408110156100d557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610254565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101546004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610285565b604080519115158252519081900360200190f35b600061019073ffffffffffffffffffffffffffffffffffffffff84168363ffffffff6102ae16565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a1505050565b60006102038273ffffffffffffffffffffffffffffffffffffffff16610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a15050565b600061027c73ffffffffffffffffffffffffffffffffffffffff84168363ffffffff61046416565b90505b92915050565b60006102a68273ffffffffffffffffffffffffffffffffffffffff16610501565b90505b919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602882015260378120836101008301527fff0000000000000000000000000000000000000000000000000000000000000060408301523060601b60418301526101008201516055830152806075830152605560408301209250823b6000811461036c576000935061037b565b6101008301516037846000f593505b50505073ffffffffffffffffffffffffffffffffffffffff811661027f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f50524f58595f4445504c4f595f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09392505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606092831b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152603781207fff0000000000000000000000000000000000000000000000000000000000000082523090931b6001820152601581019190915260358101919091526055902090565b600073ffffffffffffffffffffffffffffffffffffffff8216610526575060006102a9565b503b159056fea265627a7a723158201f06bab68aea9bfc7a7e661031535b77d9513fdf17fe7d391142494ff207e4dd64736f6c63430005110032",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063321660e41461005157806357894c1b1461008c5780639789e5bf146100bf578063dda1670f14610121575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610168565b005b61008a600480360360208110156100a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101e2565b6100f8600480360360408110156100d557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610254565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101546004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610285565b604080519115158252519081900360200190f35b600061019073ffffffffffffffffffffffffffffffffffffffff84168363ffffffff6102ae16565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a1505050565b60006102038273ffffffffffffffffffffffffffffffffffffffff16610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a15050565b600061027c73ffffffffffffffffffffffffffffffffffffffff84168363ffffffff61046416565b90505b92915050565b60006102a68273ffffffffffffffffffffffffffffffffffffffff16610501565b90505b919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602882015260378120836101008301527fff0000000000000000000000000000000000000000000000000000000000000060408301523060601b60418301526101008201516055830152806075830152605560408301209250823b6000811461036c576000935061037b565b6101008301516037846000f593505b50505073ffffffffffffffffffffffffffffffffffffffff811661027f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f50524f58595f4445504c4f595f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09392505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606092831b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152603781207fff0000000000000000000000000000000000000000000000000000000000000082523090931b6001820152601581019190915260358101919091526055902090565b600073ffffffffffffffffffffffffffffffffffffffff8216610526575060006102a9565b503b159056fea265627a7a723158201f06bab68aea9bfc7a7e661031535b77d9513fdf17fe7d391142494ff207e4dd64736f6c63430005110032",
"sourceMap": "179:832:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;179:832:14;;;;;;;",
"deployedSourceMap": "179:832:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;179:832:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;530:159:14;;;;;;;;;:::i;:::-;;391:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;391:135:14;;;;:::i;845:164::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;845:164:14;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;693:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;693:148:14;;;;:::i;:::-;;;;;;;;;;;;;;;;;;530:159;611:14;628:25;:19;;;648:4;628:25;:19;:25;:::i;:::-;664:20;;;;;;;;;;611:42;;-1:-1:-1;664:20:14;;;;;;;;;;530:159;;;:::o;391:135::-;453:14;470:20;:6;:18;;;:20::i;:::-;501;;;;;;;;;;453:37;;-1:-1:-1;501:20:14;;;;;;;;;;391:135;;:::o;845:164::-;938:20;975:29;:23;;;999:4;975:29;:23;:29;:::i;:::-;968:36;;845:164;;;;;:::o;693:148::-;779:4;800:36;:15;:34;;;:36::i;:::-;793:43;;693:148;;;;:::o;873:1708:8:-;959:20;1063:4;1057:11;1206:66;1197:7;1190:83;1315:6;1311:2;1307:15;1300:4;1291:7;1287:18;1280:43;1357:66;1350:4;1341:7;1337:18;1330:94;1700:4;1691:7;1681:24;1762:4;1754:5;1745:7;1741:19;1734:33;1843:66;1836:4;1827:7;1823:18;1816:94;1966:7;1962:2;1958:16;1951:4;1942:7;1938:18;1931:44;2042:5;2033:7;2029:19;2023:26;2016:4;2007:7;2003:18;1996:54;2098:16;2091:4;2082:7;2078:18;2071:44;2169:4;2162;2153:7;2149:18;2139:35;2123:51;;2201:12;2189:25;2226:1;2221:161;;;;2423:1;2407:17;;2182:250;;2221:161;2366:5;2357:7;2353:19;2347:26;2341:4;2332:7;2329:1;2321:53;2305:69;;2182:250;-1:-1:-1;;;2526:26:8;;;2518:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:452:10;485:14;581:4;575:11;607:66;600:5;593:81;714:6;710:2;706:15;699:4;692:5;688:16;681:41;754:66;747:4;740:5;736:16;729:92;855:4;848:5;845:1;838:22;828:32;554:312;-1:-1:-1;;;554:312:10:o;169:982:9:-;368:4;362:11;488:66;472:83;;593:2;589:15;;;582:4;569:18;;562:43;639:66;632:4;619:18;;612:94;785:4;766:24;;828:66;812:83;;964:7;956:16;;;950:3;937:17;;930:43;1015:4;1002:18;;995:32;;;;1069:4;1056:18;;1049:44;;;;1136:4;1117:24;;;339:808::o;170:309:11:-;258:4;275:29;;;272:65;;-1:-1:-1;325:5:11;318:12;;272:65;-1:-1:-1;418:28:11;465:9;;170:309::o",
"source": "pragma solidity ^0.5.0;\n\nimport '../proxies/CloneFactory.sol';\nimport '../proxies/Clone2Factory.sol';\nimport '../proxies/Clone2Probe.sol';\nimport '../proxies/Create2Probe.sol';\n\n\ncontract CloneFactoryMock\n{\n using CloneFactory for address;\n using Clone2Factory for address;\n using Clone2Probe for address;\n using Create2Probe for address;\n\n event CloneCreated(address proxyAddress);\n\n function createClone(\n address target\n ) external\n {\n address result = target.createClone();\n emit CloneCreated(result);\n }\n\n function createClone2(\n address target,\n bytes32 salt\n ) external\n {\n address result = target.createClone2(salt);\n emit CloneCreated(result);\n }\n\n function isAddressAvailable(\n address contractAddress\n ) public view\n returns (bool)\n {\n return contractAddress.isAddressAvailable();\n }\n\n function getClone2Address(\n address target,\n bytes32 salt\n ) public view\n returns (address cloneAddress)\n {\n return target.getClone2Address(salt);\n }\n}\n",
"sourcePath": "/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol",
"ast": {
"absolutePath": "/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol",
"exportedSymbols": {
"CloneFactoryMock": [
1615
]
},
"id": 1616,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1532,
"literals": [
"solidity",
"^",
"0.5",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:14"
},
{
"absolutePath": "/home/circleci/repo/contracts/proxies/CloneFactory.sol",
"file": "../proxies/CloneFactory.sol",
"id": 1533,
"nodeType": "ImportDirective",
"scope": 1616,
"sourceUnit": 1379,
"src": "25:37:14",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/circleci/repo/contracts/proxies/Clone2Factory.sol",
"file": "../proxies/Clone2Factory.sol",
"id": 1534,
"nodeType": "ImportDirective",
"scope": 1616,
"sourceUnit": 1353,
"src": "63:38:14",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/circleci/repo/contracts/proxies/Clone2Probe.sol",
"file": "../proxies/Clone2Probe.sol",
"id": 1535,
"nodeType": "ImportDirective",
"scope": 1616,
"sourceUnit": 1367,
"src": "102:36:14",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/circleci/repo/contracts/proxies/Create2Probe.sol",
"file": "../proxies/Create2Probe.sol",
"id": 1536,
"nodeType": "ImportDirective",
"scope": 1616,
"sourceUnit": 1407,
"src": "139:37:14",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1615,
"linearizedBaseContracts": [
1615
],
"name": "CloneFactoryMock",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 1539,
"libraryName": {
"contractScope": null,
"id": 1537,
"name": "CloneFactory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1378,
"src": "215:12:14",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CloneFactory_$1378",
"typeString": "library CloneFactory"
}
},
"nodeType": "UsingForDirective",
"src": "209:31:14",
"typeName": {
"id": 1538,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "232:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 1542,
"libraryName": {
"contractScope": null,
"id": 1540,
"name": "Clone2Factory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1352,
"src": "249:13:14",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Clone2Factory_$1352",
"typeString": "library Clone2Factory"
}
},
"nodeType": "UsingForDirective",
"src": "243:32:14",
"typeName": {
"id": 1541,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "267:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 1545,
"libraryName": {
"contractScope": null,
"id": 1543,
"name": "Clone2Probe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1366,
"src": "284:11:14",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Clone2Probe_$1366",
"typeString": "library Clone2Probe"
}
},
"nodeType": "UsingForDirective",
"src": "278:30:14",
"typeName": {
"id": 1544,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "300:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 1548,
"libraryName": {
"contractScope": null,
"id": 1546,
"name": "Create2Probe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1406,
"src": "317:12:14",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Create2Probe_$1406",
"typeString": "library Create2Probe"
}
},
"nodeType": "UsingForDirective",
"src": "311:31:14",
"typeName": {
"id": 1547,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "334:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"anonymous": false,
"documentation": null,
"id": 1552,
"name": "CloneCreated",
"nodeType": "EventDefinition",
"parameters": {
"id": 1551,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1550,
"indexed": false,
"name": "proxyAddress",
"nodeType": "VariableDeclaration",
"scope": 1552,
"src": "365:20:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1549,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "365:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "364:22:14"
},
"src": "346:41:14"
},
{
"body": {
"id": 1567,
"nodeType": "Block",
"src": "447:79:14",
"statements": [
{
"assignments": [
1558
],
"declarations": [
{
"constant": false,
"id": 1558,
"name": "result",
"nodeType": "VariableDeclaration",
"scope": 1567,
"src": "453:14:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1557,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "453:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1562,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 1559,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1554,
"src": "470:6:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1560,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createClone",
"nodeType": "MemberAccess",
"referencedDeclaration": 1377,
"src": "470:18:14",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$bound_to$_t_address_$",
"typeString": "function (address) returns (address)"
}
},
"id": 1561,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "470:20:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "453:37:14"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1564,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "514:6:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1563,
"name": "CloneCreated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1552,
"src": "501:12:14",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 1565,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "501:20:14",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1566,
"nodeType": "EmitStatement",
"src": "496:25:14"
}
]
},
"documentation": null,
"id": 1568,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "createClone",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1555,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1554,
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 1568,
"src": "417:14:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1553,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "417:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "411:24:14"
},
"returnParameters": {
"id": 1556,
"nodeType": "ParameterList",
"parameters": [],
"src": "447:0:14"
},
"scope": 1615,
"src": "391:135:14",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 1586,
"nodeType": "Block",
"src": "605:84:14",
"statements": [
{
"assignments": [
1576
],
"declarations": [
{
"constant": false,
"id": 1576,
"name": "result",
"nodeType": "VariableDeclaration",
"scope": 1586,
"src": "611:14:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1575,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "611:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1581,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1579,
"name": "salt",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1572,
"src": "648:4:14",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 1577,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1570,
"src": "628:6:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1578,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createClone2",
"nodeType": "MemberAccess",
"referencedDeclaration": 1351,
"src": "628:19:14",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$bound_to$_t_address_$",
"typeString": "function (address,bytes32) returns (address)"
}
},
"id": 1580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "628:25:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "611:42:14"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1583,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1576,
"src": "677:6:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1582,
"name": "CloneCreated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1552,
"src": "664:12:14",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 1584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "664:20:14",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1585,
"nodeType": "EmitStatement",
"src": "659:25:14"
}
]
},
"documentation": null,
"id": 1587,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "createClone2",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1573,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1570,
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 1587,
"src": "557:14:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1569,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "557:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1572,
"name": "salt",
"nodeType": "VariableDeclaration",
"scope": 1587,
"src": "577:12:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1571,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "577:7:14",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "551:42:14"
},
"returnParameters": {
"id": 1574,
"nodeType": "ParameterList",
"parameters": [],
"src": "605:0:14"
},
"scope": 1615,
"src": "530:159:14",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 1598,
"nodeType": "Block",
"src": "787:54:14",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 1594,
"name": "contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1589,
"src": "800:15:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1595,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isAddressAvailable",
"nodeType": "MemberAccess",
"referencedDeclaration": 1405,
"src": "800:34:14",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 1596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "800:36:14",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 1593,
"id": 1597,
"nodeType": "Return",
"src": "793:43:14"
}
]
},
"documentation": null,
"id": 1599,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isAddressAvailable",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1590,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1589,
"name": "contractAddress",
"nodeType": "VariableDeclaration",
"scope": 1599,
"src": "726:23:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1588,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "726:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "720:33:14"
},
"returnParameters": {
"id": 1593,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1592,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1599,
"src": "779:4:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1591,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "779:4:14",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "778:6:14"
},
"scope": 1615,
"src": "693:148:14",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1613,
"nodeType": "Block",
"src": "962:47:14",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1610,
"name": "salt",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1603,
"src": "999:4:14",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 1608,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1601,
"src": "975:6:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getClone2Address",
"nodeType": "MemberAccess",
"referencedDeclaration": 1365,
"src": "975:23:14",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$bound_to$_t_address_$",
"typeString": "function (address,bytes32) view returns (address)"
}
},
"id": 1611,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "975:29:14",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 1607,
"id": 1612,
"nodeType": "Return",
"src": "968:36:14"
}
]
},
"documentation": null,
"id": 1614,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getClone2Address",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1604,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1601,
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 1614,
"src": "876:14:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1600,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "876:7:14",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1603,
"name": "salt",
"nodeType": "VariableDeclaration",
"scope": 1614,
"src": "896:12:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1602,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "896:7:14",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "870:42:14"
},
"returnParameters": {
"id": 1607,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1606,
"name": "cloneAddress",
"nodeType": "VariableDeclaration",
"scope": 1614,
"src": "938:20:14",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address