{
    "abi": [
        {
            "type": "constructor",
            "inputs": [
                {
                    "name": "_communityModule",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "_sessionManagerModule",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "COMMUNITY_MODULE",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "NAME",
            "inputs": [],
            "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "SESSION_MANAGER_MODULE",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "VERSION",
            "inputs": [],
            "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "configureSafe",
            "inputs": [
                { "name": "_safe", "type": "address", "internalType": "address" },
                {
                    "name": "_safeModules",
                    "type": "address[]",
                    "internalType": "address[]"
                },
                { "name": "_guard", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "createAccount",
            "inputs": [
                { "name": "_provider", "type": "address", "internalType": "address" },
                { "name": "_salt", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "createChainSpecificProxyWithNonce",
            "inputs": [
                { "name": "_singleton", "type": "address", "internalType": "address" },
                { "name": "initializer", "type": "bytes", "internalType": "bytes" },
                { "name": "saltNonce", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [
                {
                    "name": "proxy",
                    "type": "address",
                    "internalType": "contract SafeProxy"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "createProxyWithCallback",
            "inputs": [
                { "name": "_singleton", "type": "address", "internalType": "address" },
                { "name": "initializer", "type": "bytes", "internalType": "bytes" },
                { "name": "saltNonce", "type": "uint256", "internalType": "uint256" },
                {
                    "name": "callback",
                    "type": "address",
                    "internalType": "contract IProxyCreationCallback"
                }
            ],
            "outputs": [
                {
                    "name": "proxy",
                    "type": "address",
                    "internalType": "contract SafeProxy"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "createProxyWithNonce",
            "inputs": [
                { "name": "_singleton", "type": "address", "internalType": "address" },
                { "name": "initializer", "type": "bytes", "internalType": "bytes" },
                { "name": "saltNonce", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [
                {
                    "name": "proxy",
                    "type": "address",
                    "internalType": "contract SafeProxy"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "getAddress",
            "inputs": [
                { "name": "_provider", "type": "address", "internalType": "address" },
                { "name": "_salt", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getChainId",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "proxyCreationCode",
            "inputs": [],
            "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
            "stateMutability": "pure"
        },
        {
            "type": "event",
            "name": "ProxyCreation",
            "inputs": [
                {
                    "name": "proxy",
                    "type": "address",
                    "indexed": true,
                    "internalType": "contract SafeProxy"
                },
                {
                    "name": "singleton",
                    "type": "address",
                    "indexed": false,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        }
    ],
    "bytecode": {
        "object": "0x60c060405234801561001057600080fd5b5060405161120238038061120283398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a0516111346100ce6000396000818160be0152818161088301526108ea0152600081816101ac015261082f01526111346000f3fe6080604052600436106100a75760003560e01c80639702dfb1116100645780639702dfb11461019a578063a3f4df7e146101ce578063d18af54d14610205578063e20bbf2b14610225578063ec9e80bb1461023a578063ffa1ad741461025a57600080fd5b806304f7b364146100ac5780631688f0b9146100fd5780633408e4701461011d57806353e5d935146101385780635fbfb9cf1461015a5780638cb84e181461017a575b600080fd5b3480156100b857600080fd5b506100e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010957600080fd5b506100e0610118366004610bb3565b61028b565b34801561012957600080fd5b506040514681526020016100f4565b34801561014457600080fd5b5061014d610320565b6040516100f49190610c5c565b34801561016657600080fd5b506100e0610175366004610c76565b61034a565b34801561018657600080fd5b506100e0610195366004610c76565b610404565b3480156101a657600080fd5b506100e07f000000000000000000000000000000000000000000000000000000000000000081565b3480156101da57600080fd5b5061014d6040518060400160405280600b81526020016a32464120466163746f727960a81b81525081565b34801561021157600080fd5b506100e0610220366004610ca2565b610419565b610238610233366004610d0e565b6104ea565b005b34801561024657600080fd5b506100e0610255366004610bb3565b610660565b34801561026657600080fd5b5061014d60405180604001604052806005815260200164302e302e3160d81b81525081565b6000808380519060200120836040516020016102b1929190918252602082015260400190565b6040516020818303038152906040528051906020012090506102d4858583610692565b6040516001600160a01b038781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b60606040518060200161033290610ac7565b601f1982820381018352601f90910116604052919050565b6000806103578484610404565b9050803b156103675790506103fe565b6000610372826107b8565b9050600061038086866109c6565b905060006103a37341675c099f32341bf84bfc5382af534df5c7461a8484610692565b6040517341675c099f32341bf84bfc5382af534df5c7461a81529091506001600160a01b038216907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a293505050505b92915050565b6000806104118484610a08565b949350505050565b600080838360405160200161044592919091825260601b6001600160601b031916602082015260340190565b6040516020818303038152906040528051906020012060001c905061046b86868361028b565b91506001600160a01b038316156104e1576040516303ca56a360e31b81526001600160a01b03841690631e52b518906104ae9085908a908a908a90600401610de5565b600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b505050505b50949350505050565b8260005b83518110156105fe57600084828151811061050b5761050b610e22565b6020908102919091010151604051632d9ad53d60e01b81526001600160a01b03808316600483015291925090841690632d9ad53d90602401602060405180830381865afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190610e38565b1561058f57506105ec565b60405163610b592560e01b81526001600160a01b03828116600483015284169063610b592590602401600060405180830381600087803b1580156105d257600080fd5b505af11580156105e6573d6000803e3d6000fd5b50505050505b806105f681610e5a565b9150506104ee565b5060405163e19a9dd960e01b81526001600160a01b03838116600483015282169063e19a9dd990602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050565b6000808380519060200120836106734690565b60408051602081019490945283019190915260608201526080016102b1565b6000833b6106e75760405162461bcd60e51b815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016106f990610ac7565b601f1982820381018352601f90910116604081905261072691906001600160a01b03881690602001610e81565b6040516020818303038152906040529050828151826020016000f591506001600160a01b03821661078f5760405162461bcd60e51b815260206004820152601360248201527210dc99585d194c8818d85b1b0819985a5b1959606a1b60448201526064016106de565b8351156107b05760008060008651602088016000875af1036107b057600080fd5b509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905030816000815181106107f2576107f2610e22565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061086157610861610e22565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106108b5576108b5610e22565b60200260200101906001600160a01b031690816001600160a01b0316815250506000306001600160a01b031663e20bbf2b86847f000000000000000000000000000000000000000000000000000000000000000060405160240161091b93929190610ee7565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509050600063b63e800d60e01b846001308573edcf620325e82e3b9836eaaefdc4283e99dd7562600080600060405160240161098a989796959493929190610f1c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529695505050505050565b6040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b600080610a1584846109c6565b90506001600160f81b03193082610a2a610320565b604051610a5091907341675c099f32341bf84bfc5382af534df5c7461a90602001610e81565b60405160208183030381529060405280519060200120604051602001610aa894939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b6040516020818303038152906040528051906020012091505092915050565b61017280610f8d83390190565b6001600160a01b0381168114610ae957600080fd5b50565b8035610af781610ad4565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b3b57610b3b610afc565b604052919050565b600082601f830112610b5457600080fd5b813567ffffffffffffffff811115610b6e57610b6e610afc565b610b81601f8201601f1916602001610b12565b818152846020838601011115610b9657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610bc857600080fd5b8335610bd381610ad4565b9250602084013567ffffffffffffffff811115610bef57600080fd5b610bfb86828701610b43565b925050604084013590509250925092565b60005b83811015610c27578181015183820152602001610c0f565b50506000910152565b60008151808452610c48816020860160208601610c0c565b601f01601f19169290920160200192915050565b602081526000610c6f6020830184610c30565b9392505050565b60008060408385031215610c8957600080fd5b8235610c9481610ad4565b946020939093013593505050565b60008060008060808587031215610cb857600080fd5b8435610cc381610ad4565b9350602085013567ffffffffffffffff811115610cdf57600080fd5b610ceb87828801610b43565b935050604085013591506060850135610d0381610ad4565b939692955090935050565b600080600060608486031215610d2357600080fd5b8335610d2e81610ad4565b925060208481013567ffffffffffffffff80821115610d4c57600080fd5b818701915087601f830112610d6057600080fd5b813581811115610d7257610d72610afc565b8060051b9150610d83848301610b12565b818152918301840191848101908a841115610d9d57600080fd5b938501935b83851015610dc75784359250610db783610ad4565b8282529385019390850190610da2565b809750505050505050610ddc60408501610aec565b90509250925092565b6001600160a01b03858116825284166020820152608060408201819052600090610e1190830185610c30565b905082606083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610e4a57600080fd5b81518015158114610c6f57600080fd5b600060018201610e7a57634e487b7160e01b600052601160045260246000fd5b5060010190565b60008351610e93818460208801610c0c565b9190910191825250602001919050565b600081518084526020808501945080840160005b83811015610edc5781516001600160a01b031687529582019590820190600101610eb7565b509495945050505050565b600060018060a01b03808616835260606020840152610f096060840186610ea3565b9150808416604084015250949350505050565b6000610100808352610f308184018c610ea3565b60ff8b1660208501526001600160a01b038a811660408601528482036060860152909150610f5e828a610c30565b978116608085015295861660a0840152505060ff9290921660c083015290911660e09091015294935050505056fe608060405234801561001057600080fd5b5060405161017238038061017283398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b607b806100f76000396000f3fe6080604052600080546001600160a01b0316632cf35bc960e11b823501602757808252602082f35b3682833781823684845af490503d82833e806040573d82fd5b503d81f3fea2646970667358221220eaaddd75a63b28423ea15a98ca99d3faeebf720cf05c8bc85426e94a3df53b7f64736f6c63430008140033a26469706673582212206e3f9d6536a8bb70f2a0869b1713208c1b8dbe2d14795c86940a22ba766bef1164736f6c63430008140033",
        "sourceMap": "386:4984:118:-:0;;;616:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;689:35:118;;;;;728:46;;;386:4984;;14:177:123;93:13;;-1:-1:-1;;;;;135:31:123;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;386:4984:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
        "linkReferences": {}
    },
    "deployedBytecode": {
        "object": "0x6080604052600436106100a75760003560e01c80639702dfb1116100645780639702dfb11461019a578063a3f4df7e146101ce578063d18af54d14610205578063e20bbf2b14610225578063ec9e80bb1461023a578063ffa1ad741461025a57600080fd5b806304f7b364146100ac5780631688f0b9146100fd5780633408e4701461011d57806353e5d935146101385780635fbfb9cf1461015a5780638cb84e181461017a575b600080fd5b3480156100b857600080fd5b506100e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010957600080fd5b506100e0610118366004610bb3565b61028b565b34801561012957600080fd5b506040514681526020016100f4565b34801561014457600080fd5b5061014d610320565b6040516100f49190610c5c565b34801561016657600080fd5b506100e0610175366004610c76565b61034a565b34801561018657600080fd5b506100e0610195366004610c76565b610404565b3480156101a657600080fd5b506100e07f000000000000000000000000000000000000000000000000000000000000000081565b3480156101da57600080fd5b5061014d6040518060400160405280600b81526020016a32464120466163746f727960a81b81525081565b34801561021157600080fd5b506100e0610220366004610ca2565b610419565b610238610233366004610d0e565b6104ea565b005b34801561024657600080fd5b506100e0610255366004610bb3565b610660565b34801561026657600080fd5b5061014d60405180604001604052806005815260200164302e302e3160d81b81525081565b6000808380519060200120836040516020016102b1929190918252602082015260400190565b6040516020818303038152906040528051906020012090506102d4858583610692565b6040516001600160a01b038781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b60606040518060200161033290610ac7565b601f1982820381018352601f90910116604052919050565b6000806103578484610404565b9050803b156103675790506103fe565b6000610372826107b8565b9050600061038086866109c6565b905060006103a37341675c099f32341bf84bfc5382af534df5c7461a8484610692565b6040517341675c099f32341bf84bfc5382af534df5c7461a81529091506001600160a01b038216907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a293505050505b92915050565b6000806104118484610a08565b949350505050565b600080838360405160200161044592919091825260601b6001600160601b031916602082015260340190565b6040516020818303038152906040528051906020012060001c905061046b86868361028b565b91506001600160a01b038316156104e1576040516303ca56a360e31b81526001600160a01b03841690631e52b518906104ae9085908a908a908a90600401610de5565b600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b505050505b50949350505050565b8260005b83518110156105fe57600084828151811061050b5761050b610e22565b6020908102919091010151604051632d9ad53d60e01b81526001600160a01b03808316600483015291925090841690632d9ad53d90602401602060405180830381865afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190610e38565b1561058f57506105ec565b60405163610b592560e01b81526001600160a01b03828116600483015284169063610b592590602401600060405180830381600087803b1580156105d257600080fd5b505af11580156105e6573d6000803e3d6000fd5b50505050505b806105f681610e5a565b9150506104ee565b5060405163e19a9dd960e01b81526001600160a01b03838116600483015282169063e19a9dd990602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050565b6000808380519060200120836106734690565b60408051602081019490945283019190915260608201526080016102b1565b6000833b6106e75760405162461bcd60e51b815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016106f990610ac7565b601f1982820381018352601f90910116604081905261072691906001600160a01b03881690602001610e81565b6040516020818303038152906040529050828151826020016000f591506001600160a01b03821661078f5760405162461bcd60e51b815260206004820152601360248201527210dc99585d194c8818d85b1b0819985a5b1959606a1b60448201526064016106de565b8351156107b05760008060008651602088016000875af1036107b057600080fd5b509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905030816000815181106107f2576107f2610e22565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061086157610861610e22565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106108b5576108b5610e22565b60200260200101906001600160a01b031690816001600160a01b0316815250506000306001600160a01b031663e20bbf2b86847f000000000000000000000000000000000000000000000000000000000000000060405160240161091b93929190610ee7565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509050600063b63e800d60e01b846001308573edcf620325e82e3b9836eaaefdc4283e99dd7562600080600060405160240161098a989796959493929190610f1c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529695505050505050565b6040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b600080610a1584846109c6565b90506001600160f81b03193082610a2a610320565b604051610a5091907341675c099f32341bf84bfc5382af534df5c7461a90602001610e81565b60405160208183030381529060405280519060200120604051602001610aa894939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b6040516020818303038152906040528051906020012091505092915050565b61017280610f8d83390190565b6001600160a01b0381168114610ae957600080fd5b50565b8035610af781610ad4565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b3b57610b3b610afc565b604052919050565b600082601f830112610b5457600080fd5b813567ffffffffffffffff811115610b6e57610b6e610afc565b610b81601f8201601f1916602001610b12565b818152846020838601011115610b9657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610bc857600080fd5b8335610bd381610ad4565b9250602084013567ffffffffffffffff811115610bef57600080fd5b610bfb86828701610b43565b925050604084013590509250925092565b60005b83811015610c27578181015183820152602001610c0f565b50506000910152565b60008151808452610c48816020860160208601610c0c565b601f01601f19169290920160200192915050565b602081526000610c6f6020830184610c30565b9392505050565b60008060408385031215610c8957600080fd5b8235610c9481610ad4565b946020939093013593505050565b60008060008060808587031215610cb857600080fd5b8435610cc381610ad4565b9350602085013567ffffffffffffffff811115610cdf57600080fd5b610ceb87828801610b43565b935050604085013591506060850135610d0381610ad4565b939692955090935050565b600080600060608486031215610d2357600080fd5b8335610d2e81610ad4565b925060208481013567ffffffffffffffff80821115610d4c57600080fd5b818701915087601f830112610d6057600080fd5b813581811115610d7257610d72610afc565b8060051b9150610d83848301610b12565b818152918301840191848101908a841115610d9d57600080fd5b938501935b83851015610dc75784359250610db783610ad4565b8282529385019390850190610da2565b809750505050505050610ddc60408501610aec565b90509250925092565b6001600160a01b03858116825284166020820152608060408201819052600090610e1190830185610c30565b905082606083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610e4a57600080fd5b81518015158114610c6f57600080fd5b600060018201610e7a57634e487b7160e01b600052601160045260246000fd5b5060010190565b60008351610e93818460208801610c0c565b9190910191825250602001919050565b600081518084526020808501945080840160005b83811015610edc5781516001600160a01b031687529582019590820190600101610eb7565b509495945050505050565b600060018060a01b03808616835260606020840152610f096060840186610ea3565b9150808416604084015250949350505050565b6000610100808352610f308184018c610ea3565b60ff8b1660208501526001600160a01b038a811660408601528482036060860152909150610f5e828a610c30565b978116608085015295861660a0840152505060ff9290921660c083015290911660e09091015294935050505056fe608060405234801561001057600080fd5b5060405161017238038061017283398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b607b806100f76000396000f3fe6080604052600080546001600160a01b0316632cf35bc960e11b823501602757808252602082f35b3682833781823684845af490503d82833e806040573d82fd5b503d81f3fea2646970667358221220eaaddd75a63b28423ea15a98ca99d3faeebf720cf05c8bc85426e94a3df53b7f64736f6c63430008140033a26469706673582212206e3f9d6536a8bb70f2a0869b1713208c1b8dbe2d14795c86940a22ba766bef1164736f6c63430008140033",
        "sourceMap": "386:4984:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:47;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:32:123;;;160:51;;148:2;133:18;475:47:118;;;;;;;;2515:471:99;;;;;;;;;;-1:-1:-1;2515:471:99;;;;;:::i;:::-;;:::i;6200:211::-;;;;;;;;;;-1:-1:-1;6200:211:99;;6367:9;2353:25:123;;2341:2;2326:18;6200:211:99;2207:177:123;565:116:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1116:630:118:-;;;;;;;;;;-1:-1:-1;1116:630:118;;;;;:::i;:::-;;:::i;1989:200::-;;;;;;;;;;-1:-1:-1;1989:200:118;;;;;:::i;:::-;;:::i;431:41::-;;;;;;;;;;;;;;;526:43;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;526:43:118;;;;;4936:505:99;;;;;;;;;;-1:-1:-1;4936:505:99;;;;;:::i;:::-;;:::i;4900:468:118:-;;;;;;:::i;:::-;;:::i;:::-;;3742:528:99;;;;;;;;;;-1:-1:-1;3742:528:99;;;;;:::i;:::-;;:::i;572:40:118:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;572:40:118;;;;;2515:471:99;2626:15;2795:12;2847:11;2837:22;;;;;;2861:9;2820:51;;;;;;;;5785:19:123;;;5829:2;5820:12;;5813:28;5866:2;5857:12;;5628:247;2820:51:99;;;;;;;;;;;;;2810:62;;;;;;2795:77;;2890:42;2902:10;2914:11;2927:4;2890:11;:42::i;:::-;2947:32;;-1:-1:-1;;;;;178:32:123;;;160:51;;2882:50:99;;-1:-1:-1;2947:32:99;;;;;;148:2:123;133:18;2947:32:99;;;;;;;2643:343;2515:471;;;;;:::o;565:116::-;615:12;646:28;;;;;;;;:::i;:::-;-1:-1:-1;;646:28:99;;;;;;;;;;;;;;;565:116;-1:-1:-1;565:116:99:o;1116:630:118:-;1191:7;1244:19;1266:28;1277:9;1288:5;1266:10;:28::i;:::-;1244:50;-1:-1:-1;5978:20:99;;6024:8;1339:83:118;;1406:11;-1:-1:-1;1399:18:118;;1339:83;1426:28;1457;1473:11;1457:15;:28::i;:::-;1426:59;;1489:12;1504:26;1513:9;1524:5;1504:8;:26::i;:::-;1489:41;;1558:19;1580:66;1194:42:120;1624:15:118;1641:4;1580:11;:66::i;:::-;1656:56;;1194:42:120;160:51:123;;1558:88:118;;-1:-1:-1;;;;;;1656:56:118;;;;;148:2:123;133:18;1656:56:118;;;;;;;1732:9;-1:-1:-1;;;;1116:630:118;;;;;:::o;1989:200::-;2064:7;2077:20;2100:34;2117:9;2128:5;2100:16;:34::i;:::-;2077:57;1989:200;-1:-1:-1;;;;1989:200:118:o;4936:505:99:-;5121:15;5148:29;5215:9;5226:8;5198:37;;;;;;;;6069:19:123;;;6126:2;6122:15;-1:-1:-1;;;;;;6118:53:123;6113:2;6104:12;;6097:75;6197:2;6188:12;;5880:326;5198:37:99;;;;;;;;;;;;;5188:48;;;;;;5180:57;;5148:89;;5255:68;5276:10;5288:11;5301:21;5255:20;:68::i;:::-;5247:76;-1:-1:-1;;;;;;5337:31:99;;;5333:101;;5370:64;;-1:-1:-1;;;5370:64:99;;-1:-1:-1;;;;;5370:21:99;;;;;:64;;5392:5;;5399:10;;5411:11;;5424:9;;5370:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5333:101;5138:303;4936:505;;;;;;:::o;4900:468:118:-;5029:5;5004:9;5041:275;5065:12;:19;5061:1;:23;5041:275;;;5096:14;5113:12;5126:1;5113:15;;;;;;;;:::i;:::-;;;;;;;;;;;5183:52;;-1:-1:-1;;;5183:52:118;;-1:-1:-1;;;;;178:32:123;;;5183:52:118;;;160:51:123;5113:15:118;;-1:-1:-1;5183:44:118;;;;;;133:18:123;;5183:52:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5179:78;;;5243:8;;;5179:78;5262:49;;-1:-1:-1;;;5262:49:118;;-1:-1:-1;;;;;178:32:123;;;5262:49:118;;;160:51:123;5262:41:118;;;;;133:18:123;;5262:49:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5091:225;5041:275;5086:3;;;;:::i;:::-;;;;5041:275;;;-1:-1:-1;5320:44:118;;-1:-1:-1;;;5320:44:118;;-1:-1:-1;;;;;178:32:123;;;5320:44:118;;;160:51:123;5320:36:118;;;;;133:18:123;;5320:44:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5000:368;4900:468;;;:::o;3742:528:99:-;3896:15;4065:12;4117:11;4107:22;;;;;;4131:9;4142:12;6367:9;;6200:211;4142:12;4090:65;;;;;;7567:19:123;;;;7602:12;;7595:28;;;;7639:12;;;7632:28;7676:12;;4090:65:99;7382:312:123;1185:858:99;1284:15;5978:20;;1311:66;;;;-1:-1:-1;;;1311:66:99;;7901:2:123;1311:66:99;;;7883:21:123;7940:2;7920:18;;;7913:30;7979:33;7959:18;;;7952:61;8030:18;;1311:66:99;;;;;;;;;1388:27;1435:28;;;;;;;;:::i;:::-;-1:-1:-1;;1435:28:99;;;;;;;;;;;;;;;;1418:76;;1435:28;-1:-1:-1;;;;;1465:28:99;;;1435;1418:76;;:::i;:::-;;;;;;;;;;;;;1388:106;;1655:4;1638:14;1632:21;1615:14;1609:4;1605:25;1600:3;1592:68;1583:77;-1:-1:-1;;;;;;1687:28:99;;1679:60;;;;-1:-1:-1;;;1679:60:99;;8649:2:123;1679:60:99;;;8631:21:123;8688:2;8668:18;;;8661:30;-1:-1:-1;;;8707:18:123;;;8700:49;8766:18;;1679:60:99;8447:343:123;1679:60:99;1754:18;;:22;1750:287;;1958:1;1954;1951;1937:11;1931:18;1924:4;1911:11;1907:22;1904:1;1897:5;1890;1885:71;1882:78;1879:134;;1993:1;1990;1983:12;1879:134;1301:742;1185:858;;;;;:::o;3692:963:118:-;3799:16;;;3813:1;3799:16;;;;;;;;;3755:12;;3773:23;;3799:16;;;;;;;;;;;;-1:-1:-1;3799:16:118;3773:42;;3839:4;3819:6;3826:1;3819:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3819:25:118;;;;:9;;;;;;;;;;:25;3915:16;;;3929:1;3915:16;;;;;;;;3888:24;;3915:16;;3929:1;;3915:16;;;;;;;;;-1:-1:-1;3915:16:118;3888:43;;3948:16;3935:7;3943:1;3935:10;;;;;;;;:::i;:::-;;;;;;:29;-1:-1:-1;;;;;3935:29:118;;;-1:-1:-1;;;;;3935:29:118;;;;;3981:22;3968:7;3976:1;3968:10;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;3968:35:118;;;-1:-1:-1;;;;;3968:35:118;;;;;4117:30;4165:4;-1:-1:-1;;;;;4165:18:118;;4186:5;4193:7;4202:22;4150:76;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4150:76:118;;;;;;;;;;;4117:109;;4266:28;4324:19;;;4348:6;4359:1;4386:4;4402:17;572:42:120;4552:1:118;4575;4600;4297:328;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4297:328:118;;;;;;;;;;;;;;-1:-1:-1;;;;;4297:328:118;-1:-1:-1;;;;;;4297:328:118;;;;;;;;;;;3692:963;-1:-1:-1;;;;;;3692:963:118:o;2554:144::-;2659:34;;-1:-1:-1;;;;;;10888:2:123;10884:15;;;10880:53;2659:34:118;;;10868:66:123;10950:12;;;10943:28;;;2629:7:118;;10987:12:123;;2659:34:118;;;;;;;;;;;;2649:45;;;;;;2642:52;;2554:144;;;;:::o;3074:353::-;3157:7;3170:12;3185:26;3194:9;3205:5;3185:8;:26::i;:::-;3170:41;-1:-1:-1;;;;;;;3291:4:118;3170:41;3341:19;:17;:19::i;:::-;3324:87;;;;;1194:42:120;;3324:87:118;;;:::i;:::-;;;;;;;;;;;;;3314:98;;;;;;3241:177;;;;;;;;;;-1:-1:-1;;;;;;11233:26:123;;;;11221:39;;11297:2;11293:15;;;;-1:-1:-1;;;;;;11289:53:123;11285:1;11276:11;;11269:74;11368:2;11359:12;;11352:28;11405:2;11396:12;;11389:28;11442:2;11433:12;;11010:441;3241:177:118;;;;;;;;;;;;;3226:197;;;;;;3216:207;;;3074:353;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;222:131:123:-;-1:-1:-1;;;;;297:31:123;;287:42;;277:70;;343:1;340;333:12;277:70;222:131;:::o;358:134::-;426:20;;455:31;426:20;455:31;:::i;:::-;358:134;;;:::o;497:127::-;558:10;553:3;549:20;546:1;539:31;589:4;586:1;579:15;613:4;610:1;603:15;629:275;700:2;694:9;765:2;746:13;;-1:-1:-1;;742:27:123;730:40;;800:18;785:34;;821:22;;;782:62;779:88;;;847:18;;:::i;:::-;883:2;876:22;629:275;;-1:-1:-1;629:275:123:o;909:530::-;951:5;1004:3;997:4;989:6;985:17;981:27;971:55;;1022:1;1019;1012:12;971:55;1058:6;1045:20;1084:18;1080:2;1077:26;1074:52;;;1106:18;;:::i;:::-;1150:55;1193:2;1174:13;;-1:-1:-1;;1170:27:123;1199:4;1166:38;1150:55;:::i;:::-;1230:2;1221:7;1214:19;1276:3;1269:4;1264:2;1256:6;1252:15;1248:26;1245:35;1242:55;;;1293:1;1290;1283:12;1242:55;1358:2;1351:4;1343:6;1339:17;1332:4;1323:7;1319:18;1306:55;1406:1;1381:16;;;1399:4;1377:27;1370:38;;;;1385:7;909:530;-1:-1:-1;;;909:530:123:o;1444:523::-;1530:6;1538;1546;1599:2;1587:9;1578:7;1574:23;1570:32;1567:52;;;1615:1;1612;1605:12;1567:52;1654:9;1641:23;1673:31;1698:5;1673:31;:::i;:::-;1723:5;-1:-1:-1;1779:2:123;1764:18;;1751:32;1806:18;1795:30;;1792:50;;;1838:1;1835;1828:12;1792:50;1861:49;1902:7;1893:6;1882:9;1878:22;1861:49;:::i;:::-;1851:59;;;1957:2;1946:9;1942:18;1929:32;1919:42;;1444:523;;;;;:::o;2389:250::-;2474:1;2484:113;2498:6;2495:1;2492:13;2484:113;;;2574:11;;;2568:18;2555:11;;;2548:39;2520:2;2513:10;2484:113;;;-1:-1:-1;;2631:1:123;2613:16;;2606:27;2389:250::o;2644:270::-;2685:3;2723:5;2717:12;2750:6;2745:3;2738:19;2766:76;2835:6;2828:4;2823:3;2819:14;2812:4;2805:5;2801:16;2766:76;:::i;:::-;2896:2;2875:15;-1:-1:-1;;2871:29:123;2862:39;;;;2903:4;2858:50;;2644:270;-1:-1:-1;;2644:270:123:o;2919:217::-;3066:2;3055:9;3048:21;3029:4;3086:44;3126:2;3115:9;3111:18;3103:6;3086:44;:::i;:::-;3078:52;2919:217;-1:-1:-1;;;2919:217:123:o;3141:315::-;3209:6;3217;3270:2;3258:9;3249:7;3245:23;3241:32;3238:52;;;3286:1;3283;3276:12;3238:52;3325:9;3312:23;3344:31;3369:5;3344:31;:::i;:::-;3394:5;3446:2;3431:18;;;;3418:32;;-1:-1:-1;;;3141:315:123:o;3685:697::-;3812:6;3820;3828;3836;3889:3;3877:9;3868:7;3864:23;3860:33;3857:53;;;3906:1;3903;3896:12;3857:53;3945:9;3932:23;3964:31;3989:5;3964:31;:::i;:::-;4014:5;-1:-1:-1;4070:2:123;4055:18;;4042:32;4097:18;4086:30;;4083:50;;;4129:1;4126;4119:12;4083:50;4152:49;4193:7;4184:6;4173:9;4169:22;4152:49;:::i;:::-;4142:59;;;4248:2;4237:9;4233:18;4220:32;4210:42;;4304:2;4293:9;4289:18;4276:32;4317:33;4342:7;4317:33;:::i;:::-;3685:697;;;;-1:-1:-1;3685:697:123;;-1:-1:-1;;3685:697:123:o;4387:1236::-;4489:6;4497;4505;4558:2;4546:9;4537:7;4533:23;4529:32;4526:52;;;4574:1;4571;4564:12;4526:52;4613:9;4600:23;4632:31;4657:5;4632:31;:::i;:::-;4682:5;-1:-1:-1;4706:2:123;4744:18;;;4731:32;4782:18;4812:14;;;4809:34;;;4839:1;4836;4829:12;4809:34;4877:6;4866:9;4862:22;4852:32;;4922:7;4915:4;4911:2;4907:13;4903:27;4893:55;;4944:1;4941;4934:12;4893:55;4980:2;4967:16;5002:2;4998;4995:10;4992:36;;;5008:18;;:::i;:::-;5054:2;5051:1;5047:10;5037:20;;5077:28;5101:2;5097;5093:11;5077:28;:::i;:::-;5139:15;;;5209:11;;;5205:20;;;5170:12;;;;5237:19;;;5234:39;;;5269:1;5266;5259:12;5234:39;5293:11;;;;5313:223;5329:6;5324:3;5321:15;5313:223;;;5411:3;5398:17;5383:32;;5428:33;5453:7;5428:33;:::i;:::-;5474:20;;;5346:12;;;;5514;;;;5313:223;;;5555:5;5545:15;;;;;;;;5579:38;5613:2;5602:9;5598:18;5579:38;:::i;:::-;5569:48;;4387:1236;;;;;:::o;6211:515::-;-1:-1:-1;;;;;6507:15:123;;;6489:34;;6559:15;;6554:2;6539:18;;6532:43;6611:3;6606:2;6591:18;;6584:31;;;6432:4;;6632:45;;6657:19;;6649:6;6632:45;:::i;:::-;6624:53;;6713:6;6708:2;6697:9;6693:18;6686:34;6211:515;;;;;;;:::o;6731:127::-;6792:10;6787:3;6783:20;6780:1;6773:31;6823:4;6820:1;6813:15;6847:4;6844:1;6837:15;6863:277;6930:6;6983:2;6971:9;6962:7;6958:23;6954:32;6951:52;;;6999:1;6996;6989:12;6951:52;7031:9;7025:16;7084:5;7077:13;7070:21;7063:5;7060:32;7050:60;;7106:1;7103;7096:12;7145:232;7184:3;7205:17;;;7202:140;;7264:10;7259:3;7255:20;7252:1;7245:31;7299:4;7296:1;7289:15;7327:4;7324:1;7317:15;7202:140;-1:-1:-1;7369:1:123;7358:13;;7145:232::o;8059:383::-;8216:3;8254:6;8248:13;8270:66;8329:6;8324:3;8317:4;8309:6;8305:17;8270:66;:::i;:::-;8358:16;;;;8383:21;;;-1:-1:-1;8431:4:123;8420:16;;8059:383;-1:-1:-1;8059:383:123:o;8795:461::-;8848:3;8886:5;8880:12;8913:6;8908:3;8901:19;8939:4;8968:2;8963:3;8959:12;8952:19;;9005:2;8998:5;8994:14;9026:1;9036:195;9050:6;9047:1;9044:13;9036:195;;;9115:13;;-1:-1:-1;;;;;9111:39:123;9099:52;;9171:12;;;;9206:15;;;;9147:1;9065:9;9036:195;;;-1:-1:-1;9247:3:123;;8795:461;-1:-1:-1;;;;;8795:461:123:o;9261:459::-;9459:4;9505:1;9501;9496:3;9492:11;9488:19;9546:2;9538:6;9534:15;9523:9;9516:34;9586:2;9581;9570:9;9566:18;9559:30;9606:56;9658:2;9647:9;9643:18;9635:6;9606:56;:::i;:::-;9598:64;;9710:2;9702:6;9698:15;9693:2;9682:9;9678:18;9671:43;;9261:459;;;;;;:::o;9725:981::-;10093:4;10122:3;10152:2;10141:9;10134:21;10178:56;10230:2;10219:9;10215:18;10207:6;10178:56;:::i;:::-;10282:4;10270:17;;10265:2;10250:18;;10243:45;-1:-1:-1;;;;;10362:15:123;;;10357:2;10342:18;;10335:43;10414:22;;;10409:2;10394:18;;10387:50;10164:70;;-1:-1:-1;10454:32:123;10164:70;10471:6;10454:32;:::i;:::-;10523:15;;;10517:3;10502:19;;10495:44;10576:15;;;10570:3;10555:19;;10548:44;-1:-1:-1;;10641:4:123;10629:17;;;;10623:3;10608:19;;10601:46;10684:15;;;10678:3;10663:19;;;10656:44;10446:40;9725:981;-1:-1:-1;;;;9725:981:123:o",
        "linkReferences": {},
        "immutableReferences": {
            "60383": [
                { "start": 428, "length": 32 },
                { "start": 2095, "length": 32 }
            ],
            "60385": [
                { "start": 190, "length": 32 },
                { "start": 2179, "length": 32 },
                { "start": 2282, "length": 32 }
            ]
        }
    },
    "methodIdentifiers": {
        "COMMUNITY_MODULE()": "9702dfb1",
        "NAME()": "a3f4df7e",
        "SESSION_MANAGER_MODULE()": "04f7b364",
        "VERSION()": "ffa1ad74",
        "configureSafe(address,address[],address)": "e20bbf2b",
        "createAccount(address,uint256)": "5fbfb9cf",
        "createChainSpecificProxyWithNonce(address,bytes,uint256)": "ec9e80bb",
        "createProxyWithCallback(address,bytes,uint256,address)": "d18af54d",
        "createProxyWithNonce(address,bytes,uint256)": "1688f0b9",
        "getAddress(address,uint256)": "8cb84e18",
        "getChainId()": "3408e470",
        "proxyCreationCode()": "53e5d935"
    },
    "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_communityModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sessionManagerModule\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"singleton\",\"type\":\"address\"}],\"name\":\"ProxyCreation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMUNITY_MODULE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NAME\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SESSION_MANAGER_MODULE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_safe\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_safeModules\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_guard\",\"type\":\"address\"}],\"name\":\"configureSafe\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_provider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_salt\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"createChainSpecificProxyWithNonce\",\"outputs\":[{\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"},{\"internalType\":\"contract IProxyCreationCallback\",\"name\":\"callback\",\"type\":\"address\"}],\"name\":\"createProxyWithCallback\",\"outputs\":[{\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"createProxyWithNonce\",\"outputs\":[{\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_provider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_salt\",\"type\":\"uint256\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"configureSafe(address,address[],address)\":{\"details\":\"Can only be called as a part of the initialization process of a Safe\",\"params\":{\"_safe\":\"The address of the Safe proxy\",\"_safeModules\":\"The address of the modules to enable\"}},\"createAccount(address,uint256)\":{\"details\":\"This function creates a new account by deploying a Safe proxy and enabling the CommunityModule\",\"params\":{\"_provider\":\"The address of the account owner\",\"_salt\":\"A unique number to ensure different salts for the same owner\"},\"returns\":{\"_0\":\"address The address of the created account\"}},\"createChainSpecificProxyWithNonce(address,bytes,uint256)\":{\"details\":\"Allows to create a new proxy contract that should exist only on 1 network (e.g. specific governance or admin accounts)      by including the chain id in the create2 salt. Such proxies cannot be created on other networks by replaying the transaction.\",\"params\":{\"_singleton\":\"Address of singleton contract. Must be deployed at the time of execution.\",\"initializer\":\"Payload for a message call to be sent to a new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxyWithCallback(address,bytes,uint256,address)\":{\"params\":{\"_singleton\":\"Address of singleton contract. Must be deployed at the time of execution.\",\"callback\":\"Callback that will be invoked after the new proxy contract has been successfully deployed and initialized.\",\"initializer\":\"Payload for a message call to be sent to a new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxyWithNonce(address,bytes,uint256)\":{\"params\":{\"_singleton\":\"Address of singleton contract. Must be deployed at the time of execution.\",\"initializer\":\"Payload for a message call to be sent to a new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"getAddress(address,uint256)\":{\"params\":{\"_provider\":\"Address of the owner\",\"_salt\":\"Nonce that will be used to generate the salt\"},\"returns\":{\"_0\":\"The computed address of the proxy\"}},\"getChainId()\":{\"returns\":{\"_0\":\"The ID of the current chain as a uint256.\"}},\"proxyCreationCode()\":{\"details\":\"Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"configureSafe(address,address[],address)\":{\"notice\":\"Enables modules on the Safe proxy\"},\"createAccount(address,uint256)\":{\"notice\":\"Creates a new account\"},\"createChainSpecificProxyWithNonce(address,bytes,uint256)\":{\"notice\":\"Deploys a new chain-specific proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy.\"},\"createProxyWithCallback(address,bytes,uint256,address)\":{\"notice\":\"Deploy a new proxy with `_singleton` singleton and `saltNonce` salt.         Optionally executes an initializer call to a new proxy and calls a specified callback address `callback`.\"},\"createProxyWithNonce(address,bytes,uint256)\":{\"notice\":\"Deploys a new proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy.\"},\"getAddress(address,uint256)\":{\"notice\":\"Computes the address of a proxy that would be created using CREATE2\"},\"getChainId()\":{\"notice\":\"Returns the ID of the chain the contract is currently deployed on.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Modules/Session/TwoFAFactory.sol\":\"TwoFAFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@cloned/=cloned/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":modulekit/=lib/modulekit/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/safe-smart-account/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe-smart-account/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe-smart-account/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe-smart-account/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe-smart-account/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe-smart-account/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe-smart-account/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe-smart-account/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe-smart-account/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe-smart-account/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe-smart-account/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe-smart-account/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe-smart-account/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe-smart-account/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe-smart-account/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe-smart-account/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe-smart-account/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe-smart-account/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe-smart-account/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/Modules/Session/TwoFAFactory.sol\":{\"keccak256\":\"0xed2e50fa097bc368fae7efed010e01703a520fd4b3ad2296454b96e18798cfeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3605e49d0e8238726d6210c2bf3bca2703b4fee774a408344ae3dcef3b3077a\",\"dweb:/ipfs/QmSUrQoGuRDnmUzHyc7eTUisjtjZioyaSHZ4QTmechNkQo\"]},\"src/utils/SafeSuiteLib.sol\":{\"keccak256\":\"0x7ab55dac7abd26606f2d32422a405d79ce7c655dfb3fd964a699c1878ab2f41b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://270de7ce7fb6c641a6782fe8a50aacb8b598dc0f5693d08d1af8ffdd91f8ac00\",\"dweb:/ipfs/QmRaa71vgWUwytZWw8UUHmAE3vXmi96JLGyVySVbpDxbQJ\"]}},\"version\":1}",
    "metadata": {
        "compiler": { "version": "0.8.20+commit.a1b79de6" },
        "language": "Solidity",
        "output": {
            "abi": [
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_communityModule",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "_sessionManagerModule",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "constructor"
                },
                {
                    "inputs": [
                        {
                            "internalType": "contract SafeProxy",
                            "name": "proxy",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "singleton",
                            "type": "address",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "ProxyCreation",
                    "anonymous": false
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "COMMUNITY_MODULE",
                    "outputs": [
                        { "internalType": "address", "name": "", "type": "address" }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "NAME",
                    "outputs": [
                        { "internalType": "string", "name": "", "type": "string" }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "SESSION_MANAGER_MODULE",
                    "outputs": [
                        { "internalType": "address", "name": "", "type": "address" }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "VERSION",
                    "outputs": [
                        { "internalType": "string", "name": "", "type": "string" }
                    ]
                },
                {
                    "inputs": [
                        { "internalType": "address", "name": "_safe", "type": "address" },
                        {
                            "internalType": "address[]",
                            "name": "_safeModules",
                            "type": "address[]"
                        },
                        { "internalType": "address", "name": "_guard", "type": "address" }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "configureSafe"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_provider",
                            "type": "address"
                        },
                        { "internalType": "uint256", "name": "_salt", "type": "uint256" }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "createAccount",
                    "outputs": [
                        { "internalType": "address", "name": "", "type": "address" }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_singleton",
                            "type": "address"
                        },
                        { "internalType": "bytes", "name": "initializer", "type": "bytes" },
                        {
                            "internalType": "uint256",
                            "name": "saltNonce",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "createChainSpecificProxyWithNonce",
                    "outputs": [
                        {
                            "internalType": "contract SafeProxy",
                            "name": "proxy",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_singleton",
                            "type": "address"
                        },
                        { "internalType": "bytes", "name": "initializer", "type": "bytes" },
                        {
                            "internalType": "uint256",
                            "name": "saltNonce",
                            "type": "uint256"
                        },
                        {
                            "internalType": "contract IProxyCreationCallback",
                            "name": "callback",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "createProxyWithCallback",
                    "outputs": [
                        {
                            "internalType": "contract SafeProxy",
                            "name": "proxy",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_singleton",
                            "type": "address"
                        },
                        { "internalType": "bytes", "name": "initializer", "type": "bytes" },
                        {
                            "internalType": "uint256",
                            "name": "saltNonce",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "createProxyWithNonce",
                    "outputs": [
                        {
                            "internalType": "contract SafeProxy",
                            "name": "proxy",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_provider",
                            "type": "address"
                        },
                        { "internalType": "uint256", "name": "_salt", "type": "uint256" }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getAddress",
                    "outputs": [
                        { "internalType": "address", "name": "", "type": "address" }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getChainId",
                    "outputs": [
                        { "internalType": "uint256", "name": "", "type": "uint256" }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "pure",
                    "type": "function",
                    "name": "proxyCreationCode",
                    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }]
                }
            ],
            "devdoc": {
                "kind": "dev",
                "methods": {
                    "configureSafe(address,address[],address)": {
                        "details": "Can only be called as a part of the initialization process of a Safe",
                        "params": {
                            "_safe": "The address of the Safe proxy",
                            "_safeModules": "The address of the modules to enable"
                        }
                    },
                    "createAccount(address,uint256)": {
                        "details": "This function creates a new account by deploying a Safe proxy and enabling the CommunityModule",
                        "params": {
                            "_provider": "The address of the account owner",
                            "_salt": "A unique number to ensure different salts for the same owner"
                        },
                        "returns": { "_0": "address The address of the created account" }
                    },
                    "createChainSpecificProxyWithNonce(address,bytes,uint256)": {
                        "details": "Allows to create a new proxy contract that should exist only on 1 network (e.g. specific governance or admin accounts)      by including the chain id in the create2 salt. Such proxies cannot be created on other networks by replaying the transaction.",
                        "params": {
                            "_singleton": "Address of singleton contract. Must be deployed at the time of execution.",
                            "initializer": "Payload for a message call to be sent to a new proxy contract.",
                            "saltNonce": "Nonce that will be used to generate the salt to calculate the address of the new proxy contract."
                        }
                    },
                    "createProxyWithCallback(address,bytes,uint256,address)": {
                        "params": {
                            "_singleton": "Address of singleton contract. Must be deployed at the time of execution.",
                            "callback": "Callback that will be invoked after the new proxy contract has been successfully deployed and initialized.",
                            "initializer": "Payload for a message call to be sent to a new proxy contract.",
                            "saltNonce": "Nonce that will be used to generate the salt to calculate the address of the new proxy contract."
                        }
                    },
                    "createProxyWithNonce(address,bytes,uint256)": {
                        "params": {
                            "_singleton": "Address of singleton contract. Must be deployed at the time of execution.",
                            "initializer": "Payload for a message call to be sent to a new proxy contract.",
                            "saltNonce": "Nonce that will be used to generate the salt to calculate the address of the new proxy contract."
                        }
                    },
                    "getAddress(address,uint256)": {
                        "params": {
                            "_provider": "Address of the owner",
                            "_salt": "Nonce that will be used to generate the salt"
                        },
                        "returns": { "_0": "The computed address of the proxy" }
                    },
                    "getChainId()": {
                        "returns": { "_0": "The ID of the current chain as a uint256." }
                    },
                    "proxyCreationCode()": {
                        "details": "Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address."
                    }
                },
                "version": 1
            },
            "userdoc": {
                "kind": "user",
                "methods": {
                    "configureSafe(address,address[],address)": {
                        "notice": "Enables modules on the Safe proxy"
                    },
                    "createAccount(address,uint256)": {
                        "notice": "Creates a new account"
                    },
                    "createChainSpecificProxyWithNonce(address,bytes,uint256)": {
                        "notice": "Deploys a new chain-specific proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy."
                    },
                    "createProxyWithCallback(address,bytes,uint256,address)": {
                        "notice": "Deploy a new proxy with `_singleton` singleton and `saltNonce` salt.         Optionally executes an initializer call to a new proxy and calls a specified callback address `callback`."
                    },
                    "createProxyWithNonce(address,bytes,uint256)": {
                        "notice": "Deploys a new proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy."
                    },
                    "getAddress(address,uint256)": {
                        "notice": "Computes the address of a proxy that would be created using CREATE2"
                    },
                    "getChainId()": {
                        "notice": "Returns the ID of the chain the contract is currently deployed on."
                    }
                },
                "version": 1
            }
        },
        "settings": {
            "remappings": [
                "@cloned/=cloned/",
                "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
                "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
                "account-abstraction/=lib/account-abstraction/contracts/",
                "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
                "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
                "forge-std/=lib/forge-std/src/",
                "modulekit/=lib/modulekit/src/",
                "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
                "openzeppelin-contracts/=lib/openzeppelin-contracts/",
                "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
                "safe-smart-account/=lib/safe-smart-account/",
                "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"
            ],
            "optimizer": { "enabled": true, "runs": 200 },
            "metadata": { "bytecodeHash": "ipfs" },
            "compilationTarget": {
                "src/Modules/Session/TwoFAFactory.sol": "TwoFAFactory"
            },
            "evmVersion": "paris",
            "libraries": {}
        },
        "sources": {
            "lib/safe-smart-account/contracts/Safe.sol": {
                "keccak256": "0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638",
                "urls": [
                    "bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119",
                    "dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/base/Executor.sol": {
                "keccak256": "0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a",
                "urls": [
                    "bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c",
                    "dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/base/FallbackManager.sol": {
                "keccak256": "0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165",
                "urls": [
                    "bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e",
                    "dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/base/GuardManager.sol": {
                "keccak256": "0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d",
                "urls": [
                    "bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64",
                    "dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/base/ModuleManager.sol": {
                "keccak256": "0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a",
                "urls": [
                    "bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d",
                    "dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/base/OwnerManager.sol": {
                "keccak256": "0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c",
                "urls": [
                    "bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a",
                    "dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/common/Enum.sol": {
                "keccak256": "0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453",
                "urls": [
                    "bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34",
                    "dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/common/NativeCurrencyPaymentFallback.sol": {
                "keccak256": "0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba",
                "urls": [
                    "bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9",
                    "dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/common/SecuredTokenTransfer.sol": {
                "keccak256": "0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05",
                "urls": [
                    "bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3",
                    "dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/common/SelfAuthorized.sol": {
                "keccak256": "0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13",
                "urls": [
                    "bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3",
                    "dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/common/SignatureDecoder.sol": {
                "keccak256": "0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c",
                "urls": [
                    "bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80",
                    "dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/common/Singleton.sol": {
                "keccak256": "0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50",
                "urls": [
                    "bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde",
                    "dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/common/StorageAccessible.sol": {
                "keccak256": "0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e",
                "urls": [
                    "bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e",
                    "dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/external/SafeMath.sol": {
                "keccak256": "0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89",
                "urls": [
                    "bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c",
                    "dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/interfaces/IERC165.sol": {
                "keccak256": "0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb",
                "urls": [
                    "bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89",
                    "dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/interfaces/ISignatureValidator.sol": {
                "keccak256": "0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457",
                "urls": [
                    "bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25",
                    "dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/proxies/IProxyCreationCallback.sol": {
                "keccak256": "0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602",
                "urls": [
                    "bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099",
                    "dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/proxies/SafeProxy.sol": {
                "keccak256": "0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2",
                "urls": [
                    "bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec",
                    "dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"
                ],
                "license": "LGPL-3.0-only"
            },
            "lib/safe-smart-account/contracts/proxies/SafeProxyFactory.sol": {
                "keccak256": "0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533",
                "urls": [
                    "bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26",
                    "dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"
                ],
                "license": "LGPL-3.0-only"
            },
            "src/Modules/Session/TwoFAFactory.sol": {
                "keccak256": "0xed2e50fa097bc368fae7efed010e01703a520fd4b3ad2296454b96e18798cfeb",
                "urls": [
                    "bzz-raw://b3605e49d0e8238726d6210c2bf3bca2703b4fee774a408344ae3dcef3b3077a",
                    "dweb:/ipfs/QmSUrQoGuRDnmUzHyc7eTUisjtjZioyaSHZ4QTmechNkQo"
                ],
                "license": "MIT"
            },
            "src/utils/SafeSuiteLib.sol": {
                "keccak256": "0x7ab55dac7abd26606f2d32422a405d79ce7c655dfb3fd964a699c1878ab2f41b",
                "urls": [
                    "bzz-raw://270de7ce7fb6c641a6782fe8a50aacb8b598dc0f5693d08d1af8ffdd91f8ac00",
                    "dweb:/ipfs/QmRaa71vgWUwytZWw8UUHmAE3vXmi96JLGyVySVbpDxbQJ"
                ],
                "license": "MIT"
            }
        },
        "version": 1
    },
    "storageLayout": { "storage": [], "types": {} },
    "ast": {
        "absolutePath": "src/Modules/Session/TwoFAFactory.sol",
        "id": 60730,
        "exportedSymbols": {
            "GuardManager": [52803],
            "ModuleManager": [53229],
            "Safe": [52579],
            "SafeProxy": [54556],
            "SafeProxyFactory": [54807],
            "SafeSuiteLib": [60777],
            "TwoFAFactory": [60729]
        },
        "nodeType": "SourceUnit",
        "src": "32:5339:118",
        "nodes": [
            {
                "id": 60369,
                "nodeType": "PragmaDirective",
                "src": "32:24:118",
                "nodes": [],
                "literals": ["solidity", "^", "0.8", ".20"]
            },
            {
                "id": 60373,
                "nodeType": "ImportDirective",
                "src": "58:90:118",
                "nodes": [],
                "absolutePath": "lib/safe-smart-account/contracts/Safe.sol",
                "file": "safe-smart-account/contracts/Safe.sol",
                "nameLocation": "-1:-1:-1",
                "scope": 60730,
                "sourceUnit": 52580,
                "symbolAliases": [
                    {
                        "foreign": {
                            "id": 60370,
                            "name": "Safe",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 52579,
                            "src": "67:4:118",
                            "typeDescriptions": {}
                        },
                        "nameLocation": "-1:-1:-1"
                    },
                    {
                        "foreign": {
                            "id": 60371,
                            "name": "ModuleManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 53229,
                            "src": "73:13:118",
                            "typeDescriptions": {}
                        },
                        "nameLocation": "-1:-1:-1"
                    },
                    {
                        "foreign": {
                            "id": 60372,
                            "name": "GuardManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 52803,
                            "src": "88:12:118",
                            "typeDescriptions": {}
                        },
                        "nameLocation": "-1:-1:-1"
                    }
                ],
                "unitAlias": ""
            },
            {
                "id": 60375,
                "nodeType": "ImportDirective",
                "src": "149:93:118",
                "nodes": [],
                "absolutePath": "lib/safe-smart-account/contracts/proxies/SafeProxyFactory.sol",
                "file": "safe-smart-account/contracts/proxies/SafeProxyFactory.sol",
                "nameLocation": "-1:-1:-1",
                "scope": 60730,
                "sourceUnit": 54808,
                "symbolAliases": [
                    {
                        "foreign": {
                            "id": 60374,
                            "name": "SafeProxyFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 54807,
                            "src": "158:16:118",
                            "typeDescriptions": {}
                        },
                        "nameLocation": "-1:-1:-1"
                    }
                ],
                "unitAlias": ""
            },
            {
                "id": 60377,
                "nodeType": "ImportDirective",
                "src": "243:79:118",
                "nodes": [],
                "absolutePath": "lib/safe-smart-account/contracts/proxies/SafeProxy.sol",
                "file": "safe-smart-account/contracts/proxies/SafeProxy.sol",
                "nameLocation": "-1:-1:-1",
                "scope": 60730,
                "sourceUnit": 54557,
                "symbolAliases": [
                    {
                        "foreign": {
                            "id": 60376,
                            "name": "SafeProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 54556,
                            "src": "252:9:118",
                            "typeDescriptions": {}
                        },
                        "nameLocation": "-1:-1:-1"
                    }
                ],
                "unitAlias": ""
            },
            {
                "id": 60379,
                "nodeType": "ImportDirective",
                "src": "324:60:118",
                "nodes": [],
                "absolutePath": "src/utils/SafeSuiteLib.sol",
                "file": "../../utils/SafeSuiteLib.sol",
                "nameLocation": "-1:-1:-1",
                "scope": 60730,
                "sourceUnit": 60778,
                "symbolAliases": [
                    {
                        "foreign": {
                            "id": 60378,
                            "name": "SafeSuiteLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 60777,
                            "src": "333:12:118",
                            "typeDescriptions": {}
                        },
                        "nameLocation": "-1:-1:-1"
                    }
                ],
                "unitAlias": ""
            },
            {
                "id": 60729,
                "nodeType": "ContractDefinition",
                "src": "386:4984:118",
                "nodes": [
                    {
                        "id": 60383,
                        "nodeType": "VariableDeclaration",
                        "src": "431:41:118",
                        "nodes": [],
                        "constant": false,
                        "functionSelector": "9702dfb1",
                        "mutability": "immutable",
                        "name": "COMMUNITY_MODULE",
                        "nameLocation": "456:16:118",
                        "scope": 60729,
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 60382,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "431:7:118",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "id": 60385,
                        "nodeType": "VariableDeclaration",
                        "src": "475:47:118",
                        "nodes": [],
                        "constant": false,
                        "functionSelector": "04f7b364",
                        "mutability": "immutable",
                        "name": "SESSION_MANAGER_MODULE",
                        "nameLocation": "500:22:118",
                        "scope": 60729,
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 60384,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "475:7:118",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "id": 60388,
                        "nodeType": "VariableDeclaration",
                        "src": "526:43:118",
                        "nodes": [],
                        "constant": true,
                        "functionSelector": "a3f4df7e",
                        "mutability": "constant",
                        "name": "NAME",
                        "nameLocation": "549:4:118",
                        "scope": 60729,
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 60386,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "526:6:118",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": {
                            "hexValue": "32464120466163746f7279",
                            "id": 60387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "556:13:118",
                            "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0d7c478a17e1dfc17112e51cdfdb16c564b0fead1516cdcb756c4e0fc086bb95",
                                "typeString": "literal_string \"2FA Factory\""
                            },
                            "value": "2FA Factory"
                        },
                        "visibility": "public"
                    },
                    {
                        "id": 60391,
                        "nodeType": "VariableDeclaration",
                        "src": "572:40:118",
                        "nodes": [],
                        "constant": true,
                        "functionSelector": "ffa1ad74",
                        "mutability": "constant",
                        "name": "VERSION",
                        "nameLocation": "595:7:118",
                        "scope": 60729,
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 60389,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "572:6:118",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": {
                            "hexValue": "302e302e31",
                            "id": 60390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "605:7:118",
                            "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
                                "typeString": "literal_string \"0.0.1\""
                            },
                            "value": "0.0.1"
                        },
                        "visibility": "public"
                    },
                    {
                        "id": 60407,
                        "nodeType": "FunctionDefinition",
                        "src": "616:162:118",
                        "nodes": [],
                        "body": {
                            "id": 60406,
                            "nodeType": "Block",
                            "src": "685:93:118",
                            "nodes": [],
                            "statements": [
                                {
                                    "expression": {
                                        "id": 60400,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 60398,
                                            "name": "COMMUNITY_MODULE",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60383,
                                            "src": "689:16:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 60399,
                                            "name": "_communityModule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60393,
                                            "src": "708:16:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "689:35:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 60401,
                                    "nodeType": "ExpressionStatement",
                                    "src": "689:35:118"
                                },
                                {
                                    "expression": {
                                        "id": 60404,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 60402,
                                            "name": "SESSION_MANAGER_MODULE",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60385,
                                            "src": "728:22:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 60403,
                                            "name": "_sessionManagerModule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60395,
                                            "src": "753:21:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "728:46:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 60405,
                                    "nodeType": "ExpressionStatement",
                                    "src": "728:46:118"
                                }
                            ]
                        },
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "parameters": {
                            "id": 60396,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60393,
                                    "mutability": "mutable",
                                    "name": "_communityModule",
                                    "nameLocation": "636:16:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60407,
                                    "src": "628:24:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60392,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "628:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60395,
                                    "mutability": "mutable",
                                    "name": "_sessionManagerModule",
                                    "nameLocation": "662:21:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60407,
                                    "src": "654:29:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60394,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "654:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "627:57:118"
                        },
                        "returnParameters": {
                            "id": 60397,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "685:0:118"
                        },
                        "scope": 60729,
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "id": 60466,
                        "nodeType": "FunctionDefinition",
                        "src": "1116:630:118",
                        "nodes": [],
                        "body": {
                            "id": 60465,
                            "nodeType": "Block",
                            "src": "1200:546:118",
                            "nodes": [],
                            "statements": [
                                {
                                    "assignments": [60418],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60418,
                                            "mutability": "mutable",
                                            "name": "safeAddress",
                                            "nameLocation": "1252:11:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60465,
                                            "src": "1244:19:118",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 60417,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1244:7:118",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60423,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 60420,
                                                "name": "_provider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60410,
                                                "src": "1277:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 60421,
                                                "name": "_salt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60412,
                                                "src": "1288:5:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 60419,
                                            "name": "getAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60495,
                                            "src": "1266:10:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_address_$",
                                                "typeString": "function (address,uint256) view returns (address)"
                                            }
                                        },
                                        "id": 60422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1266:28:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1244:50:118"
                                },
                                {
                                    "condition": {
                                        "arguments": [
                                            {
                                                "id": 60425,
                                                "name": "safeAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60418,
                                                "src": "1354:11:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 60424,
                                            "name": "isContract",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 54793,
                                            "src": "1343:10:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                "typeString": "function (address) view returns (bool)"
                                            }
                                        },
                                        "id": 60426,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1343:23:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 60430,
                                    "nodeType": "IfStatement",
                                    "src": "1339:83:118",
                                    "trueBody": {
                                        "id": 60429,
                                        "nodeType": "Block",
                                        "src": "1368:54:118",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 60427,
                                                    "name": "safeAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 60418,
                                                    "src": "1406:11:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 60416,
                                                "id": 60428,
                                                "nodeType": "Return",
                                                "src": "1399:18:118"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [60432],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60432,
                                            "mutability": "mutable",
                                            "name": "safeInitializer",
                                            "nameLocation": "1439:15:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60465,
                                            "src": "1426:28:118",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 60431,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1426:5:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60436,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 60434,
                                                "name": "safeAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60418,
                                                "src": "1473:11:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 60433,
                                            "name": "_getInitializer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60655,
                                            "src": "1457:15:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function (address) view returns (bytes memory)"
                                            }
                                        },
                                        "id": 60435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1457:28:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1426:59:118"
                                },
                                {
                                    "assignments": [60438],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60438,
                                            "mutability": "mutable",
                                            "name": "salt",
                                            "nameLocation": "1497:4:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60465,
                                            "src": "1489:12:118",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 60437,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1489:7:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60443,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 60440,
                                                "name": "_provider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60410,
                                                "src": "1513:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 60441,
                                                "name": "_salt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60412,
                                                "src": "1524:5:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 60439,
                                            "name": "_getSalt",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60514,
                                            "src": "1504:8:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                                "typeString": "function (address,uint256) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 60442,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1504:26:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1489:41:118"
                                },
                                {
                                    "assignments": [60446],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60446,
                                            "mutability": "mutable",
                                            "name": "safeProxy",
                                            "nameLocation": "1568:9:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60465,
                                            "src": "1558:19:118",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_SafeProxy_$54556",
                                                "typeString": "contract SafeProxy"
                                            },
                                            "typeName": {
                                                "id": 60445,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 60444,
                                                    "name": "SafeProxy",
                                                    "nameLocations": ["1558:9:118"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 54556,
                                                    "src": "1558:9:118"
                                                },
                                                "referencedDeclaration": 54556,
                                                "src": "1558:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_SafeProxy_$54556",
                                                    "typeString": "contract SafeProxy"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60453,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 60448,
                                                    "name": "SafeSuiteLib",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 60777,
                                                    "src": "1592:12:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_SafeSuiteLib_$60777_$",
                                                        "typeString": "type(library SafeSuiteLib)"
                                                    }
                                                },
                                                "id": 60449,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberLocation": "1605:17:118",
                                                "memberName": "SAFE_Safe_ADDRESS",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 60770,
                                                "src": "1592:30:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 60450,
                                                "name": "safeInitializer",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60432,
                                                "src": "1624:15:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "id": 60451,
                                                "name": "salt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60438,
                                                "src": "1641:4:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "id": 60447,
                                            "name": "deployProxy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 54639,
                                            "src": "1580:11:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_contract$_SafeProxy_$54556_$",
                                                "typeString": "function (address,bytes memory,bytes32) returns (contract SafeProxy)"
                                            }
                                        },
                                        "id": 60452,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1580:66:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_SafeProxy_$54556",
                                            "typeString": "contract SafeProxy"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1558:88:118"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 60455,
                                                "name": "safeProxy",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60446,
                                                "src": "1670:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_SafeProxy_$54556",
                                                    "typeString": "contract SafeProxy"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 60456,
                                                    "name": "SafeSuiteLib",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 60777,
                                                    "src": "1681:12:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_SafeSuiteLib_$60777_$",
                                                        "typeString": "type(library SafeSuiteLib)"
                                                    }
                                                },
                                                "id": 60457,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberLocation": "1694:17:118",
                                                "memberName": "SAFE_Safe_ADDRESS",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 60770,
                                                "src": "1681:30:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_contract$_SafeProxy_$54556",
                                                    "typeString": "contract SafeProxy"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 60454,
                                            "name": "ProxyCreation",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 54568,
                                            "src": "1656:13:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_contract$_SafeProxy_$54556_$_t_address_$returns$__$",
                                                "typeString": "function (contract SafeProxy,address)"
                                            }
                                        },
                                        "id": 60458,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1656:56:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 60459,
                                    "nodeType": "EmitStatement",
                                    "src": "1651:61:118"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 60462,
                                                "name": "safeProxy",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60446,
                                                "src": "1732:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_SafeProxy_$54556",
                                                    "typeString": "contract SafeProxy"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_contract$_SafeProxy_$54556",
                                                    "typeString": "contract SafeProxy"
                                                }
                                            ],
                                            "id": 60461,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1724:7:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                            },
                                            "typeName": {
                                                "id": 60460,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1724:7:118",
                                                "typeDescriptions": {}
                                            }
                                        },
                                        "id": 60463,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1724:18:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 60416,
                                    "id": 60464,
                                    "nodeType": "Return",
                                    "src": "1717:25:118"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 60408,
                            "nodeType": "StructuredDocumentation",
                            "src": "781:333:118",
                            "text": " @notice Creates a new account\n @dev This function creates a new account by deploying a Safe proxy and enabling the CommunityModule\n @param _provider The address of the account owner\n @param _salt A unique number to ensure different salts for the same owner\n @return address The address of the created account"
                        },
                        "functionSelector": "5fbfb9cf",
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "createAccount",
                        "nameLocation": "1125:13:118",
                        "parameters": {
                            "id": 60413,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60410,
                                    "mutability": "mutable",
                                    "name": "_provider",
                                    "nameLocation": "1147:9:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60466,
                                    "src": "1139:17:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60409,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1139:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60412,
                                    "mutability": "mutable",
                                    "name": "_salt",
                                    "nameLocation": "1166:5:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60466,
                                    "src": "1158:13:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 60411,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1158:7:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1138:34:118"
                        },
                        "returnParameters": {
                            "id": 60416,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60415,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60466,
                                    "src": "1191:7:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60414,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1191:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1190:9:118"
                        },
                        "scope": 60729,
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "id": 60495,
                        "nodeType": "FunctionDefinition",
                        "src": "1989:200:118",
                        "nodes": [],
                        "body": {
                            "id": 60494,
                            "nodeType": "Block",
                            "src": "2073:116:118",
                            "nodes": [],
                            "statements": [
                                {
                                    "assignments": [60477],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60477,
                                            "mutability": "mutable",
                                            "name": "create2Input",
                                            "nameLocation": "2085:12:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60494,
                                            "src": "2077:20:118",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 60476,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2077:7:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60482,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 60479,
                                                "name": "_provider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60469,
                                                "src": "2117:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 60480,
                                                "name": "_salt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60471,
                                                "src": "2128:5:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 60478,
                                            "name": "_getCreate2Input",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60562,
                                            "src": "2100:16:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                                "typeString": "function (address,uint256) view returns (bytes32)"
                                            }
                                        },
                                        "id": 60481,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2100:34:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2077:57:118"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 60489,
                                                                "name": "create2Input",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 60477,
                                                                "src": "2170:12:118",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "id": 60488,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "2162:7:118",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                "typeString": "type(uint256)"
                                                            },
                                                            "typeName": {
                                                                "id": 60487,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "2162:7:118",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 60490,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2162:21:118",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "id": 60486,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "2154:7:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_uint160_$",
                                                        "typeString": "type(uint160)"
                                                    },
                                                    "typeName": {
                                                        "id": 60485,
                                                        "name": "uint160",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2154:7:118",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 60491,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2154:30:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint160",
                                                    "typeString": "uint160"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint160",
                                                    "typeString": "uint160"
                                                }
                                            ],
                                            "id": 60484,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "2146:7:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                            },
                                            "typeName": {
                                                "id": 60483,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2146:7:118",
                                                "typeDescriptions": {}
                                            }
                                        },
                                        "id": 60492,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2146:39:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 60475,
                                    "id": 60493,
                                    "nodeType": "Return",
                                    "src": "2139:46:118"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 60467,
                            "nodeType": "StructuredDocumentation",
                            "src": "1749:238:118",
                            "text": " @notice Computes the address of a proxy that would be created using CREATE2\n @param _provider Address of the owner\n @param _salt Nonce that will be used to generate the salt\n @return The computed address of the proxy"
                        },
                        "functionSelector": "8cb84e18",
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getAddress",
                        "nameLocation": "1998:10:118",
                        "parameters": {
                            "id": 60472,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60469,
                                    "mutability": "mutable",
                                    "name": "_provider",
                                    "nameLocation": "2017:9:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60495,
                                    "src": "2009:17:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60468,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2009:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60471,
                                    "mutability": "mutable",
                                    "name": "_salt",
                                    "nameLocation": "2036:5:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60495,
                                    "src": "2028:13:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 60470,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2028:7:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2008:34:118"
                        },
                        "returnParameters": {
                            "id": 60475,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60474,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60495,
                                    "src": "2064:7:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60473,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2064:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2063:9:118"
                        },
                        "scope": 60729,
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "id": 60514,
                        "nodeType": "FunctionDefinition",
                        "src": "2554:144:118",
                        "nodes": [],
                        "body": {
                            "id": 60513,
                            "nodeType": "Block",
                            "src": "2638:60:118",
                            "nodes": [],
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 60508,
                                                        "name": "_provider",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60498,
                                                        "src": "2676:9:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 60509,
                                                        "name": "_salt",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60500,
                                                        "src": "2687:5:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 60506,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -1,
                                                        "src": "2659:3:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 60507,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "2663:12:118",
                                                    "memberName": "encodePacked",
                                                    "nodeType": "MemberAccess",
                                                    "src": "2659:16:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 60510,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2659:34:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 60505,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "2649:9:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 60511,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2649:45:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "functionReturnParameters": 60504,
                                    "id": 60512,
                                    "nodeType": "Return",
                                    "src": "2642:52:118"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 60496,
                            "nodeType": "StructuredDocumentation",
                            "src": "2192:360:118",
                            "text": " @notice Generates a unique salt for CREATE2 deployment\n @dev This function combines the owner's address and a nonce to create a unique identifier\n @param _provider The address of the account owner\n @param _salt A unique number to ensure different salts for the same owner\n @return bytes32 A unique salt value used in CREATE2 deployment"
                        },
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_getSalt",
                        "nameLocation": "2563:8:118",
                        "parameters": {
                            "id": 60501,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60498,
                                    "mutability": "mutable",
                                    "name": "_provider",
                                    "nameLocation": "2580:9:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60514,
                                    "src": "2572:17:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60497,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2572:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60500,
                                    "mutability": "mutable",
                                    "name": "_salt",
                                    "nameLocation": "2599:5:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60514,
                                    "src": "2591:13:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 60499,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2591:7:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2571:34:118"
                        },
                        "returnParameters": {
                            "id": 60504,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60503,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60514,
                                    "src": "2629:7:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 60502,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2629:7:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2628:9:118"
                        },
                        "scope": 60729,
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "id": 60562,
                        "nodeType": "FunctionDefinition",
                        "src": "3074:353:118",
                        "nodes": [],
                        "body": {
                            "id": 60561,
                            "nodeType": "Block",
                            "src": "3166:261:118",
                            "nodes": [],
                            "statements": [
                                {
                                    "assignments": [60525],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60525,
                                            "mutability": "mutable",
                                            "name": "salt",
                                            "nameLocation": "3178:4:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60561,
                                            "src": "3170:12:118",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 60524,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3170:7:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60530,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 60527,
                                                "name": "_provider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60517,
                                                "src": "3194:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 60528,
                                                "name": "_salt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60519,
                                                "src": "3205:5:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 60526,
                                            "name": "_getSalt",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60514,
                                            "src": "3185:8:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                                "typeString": "function (address,uint256) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 60529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3185:26:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3170:41:118"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "30786666",
                                                                "id": 60536,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3271:4:118",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_255_by_1",
                                                                    "typeString": "int_const 255"
                                                                },
                                                                "value": "0xff"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_255_by_1",
                                                                    "typeString": "int_const 255"
                                                                }
                                                            ],
                                                            "id": 60535,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "3264:6:118",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_bytes1_$",
                                                                "typeString": "type(bytes1)"
                                                            },
                                                            "typeName": {
                                                                "id": 60534,
                                                                "name": "bytes1",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3264:6:118",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 60537,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3264:12:118",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes1",
                                                            "typeString": "bytes1"
                                                        }
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 60540,
                                                                "name": "this",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -28,
                                                                "src": "3291:4:118",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_TwoFAFactory_$60729",
                                                                    "typeString": "contract TwoFAFactory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_TwoFAFactory_$60729",
                                                                    "typeString": "contract TwoFAFactory"
                                                                }
                                                            ],
                                                            "id": 60539,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "3283:7:118",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 60538,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3283:7:118",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 60541,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3283:13:118",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 60542,
                                                        "name": "salt",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60525,
                                                        "src": "3303:4:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 60546,
                                                                            "name": "proxyCreationCode",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 54580,
                                                                            "src": "3341:17:118",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                                "typeString": "function () pure returns (bytes memory)"
                                                                            }
                                                                        },
                                                                        "id": 60547,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "nameLocations": [],
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "3341:19:118",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 60552,
                                                                                            "name": "SafeSuiteLib",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 60777,
                                                                                            "src": "3378:12:118",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_SafeSuiteLib_$60777_$",
                                                                                                "typeString": "type(library SafeSuiteLib)"
                                                                                            }
                                                                                        },
                                                                                        "id": 60553,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "memberLocation": "3391:17:118",
                                                                                        "memberName": "SAFE_Safe_ADDRESS",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 60770,
                                                                                        "src": "3378:30:118",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "id": 60551,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "3370:7:118",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_uint160_$",
                                                                                        "typeString": "type(uint160)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 60550,
                                                                                        "name": "uint160",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "3370:7:118",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                },
                                                                                "id": 60554,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "typeConversion",
                                                                                "lValueRequested": false,
                                                                                "nameLocations": [],
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "3370:39:118",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint160",
                                                                                    "typeString": "uint160"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint160",
                                                                                    "typeString": "uint160"
                                                                                }
                                                                            ],
                                                                            "id": 60549,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "3362:7:118",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                                "typeString": "type(uint256)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 60548,
                                                                                "name": "uint256",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "3362:7:118",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 60555,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "nameLocations": [],
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "3362:48:118",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 60544,
                                                                        "name": "abi",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -1,
                                                                        "src": "3324:3:118",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_abi",
                                                                            "typeString": "abi"
                                                                        }
                                                                    },
                                                                    "id": 60545,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "3328:12:118",
                                                                    "memberName": "encodePacked",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "3324:16:118",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                    }
                                                                },
                                                                "id": 60556,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "nameLocations": [],
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3324:87:118",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "id": 60543,
                                                            "name": "keccak256",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -8,
                                                            "src": "3314:9:118",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 60557,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3314:98:118",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes1",
                                                            "typeString": "bytes1"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 60532,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -1,
                                                        "src": "3241:3:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 60533,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "3245:12:118",
                                                    "memberName": "encodePacked",
                                                    "nodeType": "MemberAccess",
                                                    "src": "3241:16:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 60558,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3241:177:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 60531,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "3226:9:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 60559,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3226:197:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "functionReturnParameters": 60523,
                                    "id": 60560,
                                    "nodeType": "Return",
                                    "src": "3216:207:118"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 60515,
                            "nodeType": "StructuredDocumentation",
                            "src": "2701:371:118",
                            "text": " @notice Generates the CREATE2 input for the Safe proxy\n @dev This function combines the proxy creation code and the salt to generate a unique identifier\n @param _provider The address of the account owner\n @param _salt A unique number to ensure different salts for the same owner\n @return bytes32 The CREATE2 input value used in the proxy creation"
                        },
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_getCreate2Input",
                        "nameLocation": "3083:16:118",
                        "parameters": {
                            "id": 60520,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60517,
                                    "mutability": "mutable",
                                    "name": "_provider",
                                    "nameLocation": "3108:9:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60562,
                                    "src": "3100:17:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60516,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3100:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60519,
                                    "mutability": "mutable",
                                    "name": "_salt",
                                    "nameLocation": "3127:5:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60562,
                                    "src": "3119:13:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 60518,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3119:7:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3099:34:118"
                        },
                        "returnParameters": {
                            "id": 60523,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60522,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60562,
                                    "src": "3157:7:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 60521,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3157:7:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3156:9:118"
                        },
                        "scope": 60729,
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "id": 60655,
                        "nodeType": "FunctionDefinition",
                        "src": "3692:963:118",
                        "nodes": [],
                        "body": {
                            "id": 60654,
                            "nodeType": "Block",
                            "src": "3769:886:118",
                            "nodes": [],
                            "statements": [
                                {
                                    "assignments": [60574],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60574,
                                            "mutability": "mutable",
                                            "name": "owners",
                                            "nameLocation": "3790:6:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60654,
                                            "src": "3773:23:118",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                "typeString": "address[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 60572,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3773:7:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 60573,
                                                "nodeType": "ArrayTypeName",
                                                "src": "3773:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60580,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "31",
                                                "id": 60578,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3813:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                }
                                            ],
                                            "id": 60577,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "NewExpression",
                                            "src": "3799:13:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                                "typeString": "function (uint256) pure returns (address[] memory)"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 60575,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3803:7:118",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 60576,
                                                "nodeType": "ArrayTypeName",
                                                "src": "3803:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            }
                                        },
                                        "id": 60579,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3799:16:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3773:42:118"
                                },
                                {
                                    "expression": {
                                        "id": 60588,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 60581,
                                                "name": "owners",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60574,
                                                "src": "3819:6:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                }
                                            },
                                            "id": 60583,
                                            "indexExpression": {
                                                "hexValue": "30",
                                                "id": 60582,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3826:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3819:9:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 60586,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "3839:4:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_TwoFAFactory_$60729",
                                                        "typeString": "contract TwoFAFactory"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_contract$_TwoFAFactory_$60729",
                                                        "typeString": "contract TwoFAFactory"
                                                    }
                                                ],
                                                "id": 60585,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3831:7:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 60584,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3831:7:118",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 60587,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3831:13:118",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3819:25:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 60589,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3819:25:118"
                                },
                                {
                                    "assignments": [60594],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60594,
                                            "mutability": "mutable",
                                            "name": "modules",
                                            "nameLocation": "3905:7:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60654,
                                            "src": "3888:24:118",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                "typeString": "address[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 60592,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3888:7:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 60593,
                                                "nodeType": "ArrayTypeName",
                                                "src": "3888:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60600,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "32",
                                                "id": 60598,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3929:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                }
                                            ],
                                            "id": 60597,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "NewExpression",
                                            "src": "3915:13:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                                "typeString": "function (uint256) pure returns (address[] memory)"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 60595,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3919:7:118",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 60596,
                                                "nodeType": "ArrayTypeName",
                                                "src": "3919:9:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            }
                                        },
                                        "id": 60599,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3915:16:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3888:43:118"
                                },
                                {
                                    "expression": {
                                        "id": 60605,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 60601,
                                                "name": "modules",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60594,
                                                "src": "3935:7:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                }
                                            },
                                            "id": 60603,
                                            "indexExpression": {
                                                "hexValue": "30",
                                                "id": 60602,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3943:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3935:10:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 60604,
                                            "name": "COMMUNITY_MODULE",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60383,
                                            "src": "3948:16:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3935:29:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 60606,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3935:29:118"
                                },
                                {
                                    "expression": {
                                        "id": 60611,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 60607,
                                                "name": "modules",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60594,
                                                "src": "3968:7:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                }
                                            },
                                            "id": 60609,
                                            "indexExpression": {
                                                "hexValue": "31",
                                                "id": 60608,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3976:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3968:10:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 60610,
                                            "name": "SESSION_MANAGER_MODULE",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60385,
                                            "src": "3981:22:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3968:35:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 60612,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3968:35:118"
                                },
                                {
                                    "assignments": [60614],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60614,
                                            "mutability": "mutable",
                                            "name": "configureSafeData",
                                            "nameLocation": "4130:17:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60654,
                                            "src": "4117:30:118",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 60613,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4117:5:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60624,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 60617,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "4165:4:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_TwoFAFactory_$60729",
                                                        "typeString": "contract TwoFAFactory"
                                                    }
                                                },
                                                "id": 60618,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "4170:13:118",
                                                "memberName": "configureSafe",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 60728,
                                                "src": "4165:18:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_payable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                                    "typeString": "function (address,address[] memory,address) payable external"
                                                }
                                            },
                                            {
                                                "components": [
                                                    {
                                                        "id": 60619,
                                                        "name": "_safe",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60565,
                                                        "src": "4186:5:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 60620,
                                                        "name": "modules",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60594,
                                                        "src": "4193:7:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                            "typeString": "address[] memory"
                                                        }
                                                    },
                                                    {
                                                        "id": 60621,
                                                        "name": "SESSION_MANAGER_MODULE",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60385,
                                                        "src": "4202:22:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "id": 60622,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "4185:40:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$",
                                                    "typeString": "tuple(address,address[] memory,address)"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_function_external_payable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                                    "typeString": "function (address,address[] memory,address) payable external"
                                                },
                                                {
                                                    "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$",
                                                    "typeString": "tuple(address,address[] memory,address)"
                                                }
                                            ],
                                            "expression": {
                                                "id": 60615,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -1,
                                                "src": "4150:3:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                }
                                            },
                                            "id": 60616,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "4154:10:118",
                                            "memberName": "encodeCall",
                                            "nodeType": "MemberAccess",
                                            "src": "4150:14:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                            }
                                        },
                                        "id": 60623,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4150:76:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4117:109:118"
                                },
                                {
                                    "assignments": [60626],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60626,
                                            "mutability": "mutable",
                                            "name": "safeInitializer",
                                            "nameLocation": "4279:15:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60654,
                                            "src": "4266:28:118",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 60625,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4266:5:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60651,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "expression": {
                                                        "id": 60629,
                                                        "name": "Safe",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 52579,
                                                        "src": "4324:4:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Safe_$52579_$",
                                                            "typeString": "type(contract Safe)"
                                                        }
                                                    },
                                                    "id": 60630,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "4329:5:118",
                                                    "memberName": "setup",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 51832,
                                                    "src": "4324:10:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_declaration_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_uint256_$_t_address_$_t_bytes_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_address_payable_$returns$__$",
                                                        "typeString": "function Safe.setup(address[] calldata,uint256,address,bytes calldata,address,address,uint256,address payable)"
                                                    }
                                                },
                                                "id": 60631,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberLocation": "4335:8:118",
                                                "memberName": "selector",
                                                "nodeType": "MemberAccess",
                                                "src": "4324:19:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            {
                                                "id": 60632,
                                                "name": "owners",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60574,
                                                "src": "4348:6:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                }
                                            },
                                            {
                                                "hexValue": "31",
                                                "id": 60633,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4359:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 60636,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "4386:4:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_TwoFAFactory_$60729",
                                                            "typeString": "contract TwoFAFactory"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_TwoFAFactory_$60729",
                                                            "typeString": "contract TwoFAFactory"
                                                        }
                                                    ],
                                                    "id": 60635,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "4378:7:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 60634,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "4378:7:118",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 60637,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4378:13:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 60638,
                                                "name": "configureSafeData",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60614,
                                                "src": "4402:17:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 60639,
                                                    "name": "SafeSuiteLib",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 60777,
                                                    "src": "4474:12:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_SafeSuiteLib_$60777_$",
                                                        "typeString": "type(library SafeSuiteLib)"
                                                    }
                                                },
                                                "id": 60640,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberLocation": "4487:33:118",
                                                "memberName": "SAFE_TokenCallbackHandler_ADDRESS",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 60752,
                                                "src": "4474:46:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 60643,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4552:1:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 60642,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "4544:7:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 60641,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "4544:7:118",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 60644,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4544:10:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "hexValue": "30",
                                                "id": 60645,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4575:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 60648,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4600:1:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 60647,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "4592:7:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 60646,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "4592:7:118",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 60649,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4592:10:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "id": 60627,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -1,
                                                "src": "4297:3:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                }
                                            },
                                            "id": 60628,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "4301:18:118",
                                            "memberName": "encodeWithSelector",
                                            "nodeType": "MemberAccess",
                                            "src": "4297:22:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function (bytes4) pure returns (bytes memory)"
                                            }
                                        },
                                        "id": 60650,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4297:328:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4266:359:118"
                                },
                                {
                                    "expression": {
                                        "id": 60652,
                                        "name": "safeInitializer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 60626,
                                        "src": "4636:15:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "functionReturnParameters": 60569,
                                    "id": 60653,
                                    "nodeType": "Return",
                                    "src": "4629:22:118"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 60563,
                            "nodeType": "StructuredDocumentation",
                            "src": "3430:260:118",
                            "text": " @notice Generates the initializer data for the Safe proxy\n @dev This function sets up the Safe with the necessary owners and modules\n @param _safe The address of the Safe proxy\n @return bytes memory The initializer data for the Safe proxy"
                        },
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_getInitializer",
                        "nameLocation": "3701:15:118",
                        "parameters": {
                            "id": 60566,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60565,
                                    "mutability": "mutable",
                                    "name": "_safe",
                                    "nameLocation": "3725:5:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60655,
                                    "src": "3717:13:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60564,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3717:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3716:15:118"
                        },
                        "returnParameters": {
                            "id": 60569,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60568,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60655,
                                    "src": "3755:12:118",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 60567,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3755:5:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3754:14:118"
                        },
                        "scope": 60729,
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "id": 60728,
                        "nodeType": "FunctionDefinition",
                        "src": "4900:468:118",
                        "nodes": [],
                        "body": {
                            "id": 60727,
                            "nodeType": "Block",
                            "src": "5000:368:118",
                            "nodes": [],
                            "statements": [
                                {
                                    "assignments": [60668],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 60668,
                                            "mutability": "mutable",
                                            "name": "safe",
                                            "nameLocation": "5009:4:118",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 60727,
                                            "src": "5004:9:118",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_Safe_$52579",
                                                "typeString": "contract Safe"
                                            },
                                            "typeName": {
                                                "id": 60667,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 60666,
                                                    "name": "Safe",
                                                    "nameLocations": ["5004:4:118"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 52579,
                                                    "src": "5004:4:118"
                                                },
                                                "referencedDeclaration": 52579,
                                                "src": "5004:4:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Safe_$52579",
                                                    "typeString": "contract Safe"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 60675,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 60672,
                                                        "name": "_safe",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60658,
                                                        "src": "5029:5:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 60671,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "5021:8:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                                        "typeString": "type(address payable)"
                                                    },
                                                    "typeName": {
                                                        "id": 60670,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "5021:8:118",
                                                        "stateMutability": "payable",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 60673,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5021:14:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "id": 60669,
                                            "name": "Safe",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 52579,
                                            "src": "5016:4:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Safe_$52579_$",
                                                "typeString": "type(contract Safe)"
                                            }
                                        },
                                        "id": 60674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5016:20:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Safe_$52579",
                                            "typeString": "contract Safe"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5004:32:118"
                                },
                                {
                                    "body": {
                                        "id": 60715,
                                        "nodeType": "Block",
                                        "src": "5091:225:118",
                                        "statements": [
                                            {
                                                "assignments": [60688],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 60688,
                                                        "mutability": "mutable",
                                                        "name": "module",
                                                        "nameLocation": "5104:6:118",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 60715,
                                                        "src": "5096:14:118",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 60687,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5096:7:118",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 60692,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 60689,
                                                        "name": "_safeModules",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60661,
                                                        "src": "5113:12:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                            "typeString": "address[] memory"
                                                        }
                                                    },
                                                    "id": 60691,
                                                    "indexExpression": {
                                                        "id": 60690,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 60677,
                                                        "src": "5126:1:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "5113:15:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5096:32:118"
                                            },
                                            {
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "id": 60700,
                                                            "name": "module",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 60688,
                                                            "src": "5228:6:118",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 60696,
                                                                            "name": "safe",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 60668,
                                                                            "src": "5205:4:118",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Safe_$52579",
                                                                                "typeString": "contract Safe"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Safe_$52579",
                                                                                "typeString": "contract Safe"
                                                                            }
                                                                        ],
                                                                        "id": 60695,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "5197:8:118",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_payable_$",
                                                                            "typeString": "type(address payable)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 60694,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "5197:8:118",
                                                                            "stateMutability": "payable",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 60697,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "nameLocations": [],
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "5197:13:118",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                ],
                                                                "id": 60693,
                                                                "name": "ModuleManager",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 53229,
                                                                "src": "5183:13:118",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ModuleManager_$53229_$",
                                                                    "typeString": "type(contract ModuleManager)"
                                                                }
                                                            },
                                                            "id": 60698,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5183:28:118",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ModuleManager_$53229",
                                                                "typeString": "contract ModuleManager"
                                                            }
                                                        },
                                                        "id": 60699,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5212:15:118",
                                                        "memberName": "isModuleEnabled",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 53116,
                                                        "src": "5183:44:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                                            "typeString": "function (address) view external returns (bool)"
                                                        }
                                                    },
                                                    "id": 60701,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5183:52:118",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 60704,
                                                "nodeType": "IfStatement",
                                                "src": "5179:78:118",
                                                "trueBody": {
                                                    "id": 60703,
                                                    "nodeType": "Block",
                                                    "src": "5237:20:118",
                                                    "statements": [
                                                        {
                                                            "id": 60702,
                                                            "nodeType": "Continue",
                                                            "src": "5243:8:118"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 60712,
                                                            "name": "module",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 60688,
                                                            "src": "5304:6:118",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 60708,
                                                                            "name": "safe",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 60668,
                                                                            "src": "5284:4:118",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Safe_$52579",
                                                                                "typeString": "contract Safe"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Safe_$52579",
                                                                                "typeString": "contract Safe"
                                                                            }
                                                                        ],
                                                                        "id": 60707,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "5276:8:118",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_payable_$",
                                                                            "typeString": "type(address payable)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 60706,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "5276:8:118",
                                                                            "stateMutability": "payable",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 60709,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "nameLocations": [],
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "5276:13:118",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                ],
                                                                "id": 60705,
                                                                "name": "ModuleManager",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 53229,
                                                                "src": "5262:13:118",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ModuleManager_$53229_$",
                                                                    "typeString": "type(contract ModuleManager)"
                                                                }
                                                            },
                                                            "id": 60710,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5262:28:118",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ModuleManager_$53229",
                                                                "typeString": "contract ModuleManager"
                                                            }
                                                        },
                                                        "id": 60711,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5291:12:118",
                                                        "memberName": "enableModule",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 52951,
                                                        "src": "5262:41:118",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address) external"
                                                        }
                                                    },
                                                    "id": 60713,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5262:49:118",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 60714,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5262:49:118"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 60683,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 60680,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 60677,
                                            "src": "5061:1:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 60681,
                                                "name": "_safeModules",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60661,
                                                "src": "5065:12:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                }
                                            },
                                            "id": 60682,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "5078:6:118",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "5065:19:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "5061:23:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 60716,
                                    "initializationExpression": {
                                        "assignments": [60677],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 60677,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "5054:1:118",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 60716,
                                                "src": "5046:9:118",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 60676,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5046:7:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 60679,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 60678,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5058:1:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5046:13:118"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 60685,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "5086:3:118",
                                            "subExpression": {
                                                "id": 60684,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60677,
                                                "src": "5086:1:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 60686,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5086:3:118"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "5041:275:118"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 60724,
                                                "name": "_guard",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 60663,
                                                "src": "5357:6:118",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 60720,
                                                                "name": "safe",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 60668,
                                                                "src": "5341:4:118",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_Safe_$52579",
                                                                    "typeString": "contract Safe"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_Safe_$52579",
                                                                    "typeString": "contract Safe"
                                                                }
                                                            ],
                                                            "id": 60719,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "5333:8:118",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_payable_$",
                                                                "typeString": "type(address payable)"
                                                            },
                                                            "typeName": {
                                                                "id": 60718,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "5333:8:118",
                                                                "stateMutability": "payable",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 60721,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5333:13:118",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    ],
                                                    "id": 60717,
                                                    "name": "GuardManager",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 52803,
                                                    "src": "5320:12:118",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_GuardManager_$52803_$",
                                                        "typeString": "type(contract GuardManager)"
                                                    }
                                                },
                                                "id": 60722,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5320:27:118",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_GuardManager_$52803",
                                                    "typeString": "contract GuardManager"
                                                }
                                            },
                                            "id": 60723,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "5348:8:118",
                                            "memberName": "setGuard",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 52790,
                                            "src": "5320:36:118",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address) external"
                                            }
                                        },
                                        "id": 60725,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5320:44:118",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 60726,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5320:44:118"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 60656,
                            "nodeType": "StructuredDocumentation",
                            "src": "4658:240:118",
                            "text": " @notice Enables modules on the Safe proxy\n @dev Can only be called as a part of the initialization process of a Safe\n @param _safe The address of the Safe proxy\n @param _safeModules The address of the modules to enable"
                        },
                        "functionSelector": "e20bbf2b",
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "configureSafe",
                        "nameLocation": "4909:13:118",
                        "parameters": {
                            "id": 60664,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 60658,
                                    "mutability": "mutable",
                                    "name": "_safe",
                                    "nameLocation": "4931:5:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60728,
                                    "src": "4923:13:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60657,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4923:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60661,
                                    "mutability": "mutable",
                                    "name": "_safeModules",
                                    "nameLocation": "4955:12:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60728,
                                    "src": "4938:29:118",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 60659,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "4938:7:118",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "id": 60660,
                                        "nodeType": "ArrayTypeName",
                                        "src": "4938:9:118",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                            "typeString": "address[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60663,
                                    "mutability": "mutable",
                                    "name": "_guard",
                                    "nameLocation": "4977:6:118",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 60728,
                                    "src": "4969:14:118",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 60662,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4969:7:118",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4922:62:118"
                        },
                        "returnParameters": {
                            "id": 60665,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5000:0:118"
                        },
                        "scope": 60729,
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 60380,
                            "name": "SafeProxyFactory",
                            "nameLocations": ["411:16:118"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 54807,
                            "src": "411:16:118"
                        },
                        "id": 60381,
                        "nodeType": "InheritanceSpecifier",
                        "src": "411:16:118"
                    }
                ],
                "canonicalName": "TwoFAFactory",
                "contractDependencies": [54556],
                "contractKind": "contract",
                "fullyImplemented": true,
                "linearizedBaseContracts": [60729, 54807],
                "name": "TwoFAFactory",
                "nameLocation": "395:12:118",
                "scope": 60730,
                "usedErrors": [],
                "usedEvents": [54568]
            }
        ],
        "license": "MIT"
    },
    "id": 118
}
