{
  "contractName": "Kernel",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "apps",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "recoveryVaultAppId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_MANAGER_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_shouldPetrify",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "isUpgradeable",
          "type": "bool"
        },
        {
          "indexed": false,
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "NewAppProxy",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "namespace",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "app",
          "type": "address"
        }
      ],
      "name": "SetApp",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_baseAcl",
          "type": "address"
        },
        {
          "name": "_permissionsCreator",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        },
        {
          "name": "_setDefault",
          "type": "bool"
        }
      ],
      "name": "newAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newPinnedAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        },
        {
          "name": "_setDefault",
          "type": "bool"
        }
      ],
      "name": "newPinnedAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_namespace",
          "type": "bytes32"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_app",
          "type": "address"
        }
      ],
      "name": "setApp",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_recoveryVaultAppId",
          "type": "bytes32"
        }
      ],
      "name": "setRecoveryVaultAppId",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CORE_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_BASES_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_ADDR_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "KERNEL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DEFAULT_ACL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_namespace",
          "type": "bytes32"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "getApp",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "acl",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_who",
          "type": "address"
        },
        {
          "name": "_where",
          "type": "address"
        },
        {
          "name": "_what",
          "type": "bytes32"
        },
        {
          "name": "_how",
          "type": "bytes"
        }
      ],
      "name": "hasPermission",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516020806200318f833981016040525180156200003e576200003e64010000000062000045810204565b5062000263565b620000586401000000006200014d810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000f8578181015183820152602001620000de565b50505050905090810190601f168015620001265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200014b6000196401000000006200017c810204565b565b6000620001776000805160206200316f83398151915264010000000062001dcf6200025b82021704565b905090565b6200018f6401000000006200014d810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200022e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000f8578181015183820152602001620000de565b50620002586000805160206200316f833981519152826401000000006200203b6200025f82021704565b50565b5490565b9055565b612efc80620002736000396000f300608060405260043610620001865763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146200018b5780631113ed0d14620001b7578063178e607914620001e157806332f0a3b514620001f9578063397edd41146200023a5780634558850c14620002b7578063485cc95514620002d5578063756f6049146200030e5780637e7db6e1146200032657806380cd5ac3146200035757806386070cfe146200038b5780638b3dd74914620003a35780638c61757d14620003bb5780638ea8dc9d14620003d6578063958fde8214620003ee5780639d4941d81462000422578063ae5b25401462000453578063be00bbd8146200048a578063c050a7a614620004a8578063d162f8b01462000525578063db8a61d4146200059e578063de28735914620005b6578063de4796ed14620005ce578063e156a8f314620005e6578063e8187ff0146200061a578063ede658b01462000632578063fdef910614620006ab578063ff289fc5146200072a575b600080fd5b3480156200019857600080fd5b50620001a36200075e565b604080519115158252519081900360200190f35b348015620001c457600080fd5b50620001cf6200078c565b60408051918252519081900360200190f35b348015620001ee57600080fd5b50620001cf620007b0565b3480156200020657600080fd5b5062000211620007d4565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156200024757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff16953695946064949201919081908401838280828437509497505050509135151592506200081e915050565b348015620002c457600080fd5b5062000211600435602435620009dd565b348015620002e257600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004358116906024351662000a0d565b005b3480156200031b57600080fd5b50620001cf62000c6c565b3480156200033357600080fd5b50620001a373ffffffffffffffffffffffffffffffffffffffff6004351662000c90565b3480156200036457600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000c96565b3480156200039857600080fd5b50620001cf62000dc0565b348015620003b057600080fd5b50620001cf62000dc6565b348015620003c857600080fd5b506200030c60043562000df8565b348015620003e357600080fd5b50620001cf62000eff565b348015620003fb57600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000f23565b3480156200042f57600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004351662001044565b3480156200046057600080fd5b506200030c60043560243573ffffffffffffffffffffffffffffffffffffffff604435166200137c565b3480156200049757600080fd5b506200021160043560243562001470565b348015620004b557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff1695369594606494920191908190840183828082843750949750505050913515159250620014a1915050565b3480156200053257600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620015d89650505050505050565b348015620005ab57600080fd5b50620001cf620016fd565b348015620005c357600080fd5b506200021162001721565b348015620005db57600080fd5b50620001a36200176f565b348015620005f357600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff60043516602435620017a2565b3480156200062757600080fd5b50620001cf620017c8565b3480156200063f57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620017ec9650505050505050565b348015620006b857600080fd5b50604080516020601f606435600481810135928301849004840285018401909552818452620001a39473ffffffffffffffffffffffffffffffffffffffff8135811695602480359092169560443595369560849401918190840183828082843750949750620019119650505050505050565b3480156200073757600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff6004351660243562001a6e565b6000806200076b62000dc6565b90508015801590620007865750806200078362001a8d565b10155b91505090565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c90565b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb90565b60015460009081527f9e3eae70920eeef6013879bf9155b985893698c145361c31365929723678b257602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd06200086d7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620008853330846200087f8562001a9f565b62001911565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620009265781810151838201526020016200090c565b50505050905090810190601f168015620009545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620009907ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d308887620017ec565b92508315620009d357620009d37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb88856200137c565b5050949350505050565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600062000a1962000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062000ac362001ba9565b62000b107ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a8562001c91565b62000b3c307fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a620017a2565b90508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000bda57600080fd5b505af115801562000bef573d6000803e3d6000fd5b5062000c4392507fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb91507fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90508362001c91565b50507f7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d160015550565b7fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f890565b50600190565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000ce57ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000cf73330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db791879187916200081e565b95945050505050565b60015481565b600062000df37febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e62001dcf565b905090565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000e457fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb8362001a91565b62000e573330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505050600155565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd081565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000f727ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000f843330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562001024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db79187918791620014a1565b6000806000620010548462000c90565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515620010f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620010ff620007d4565b92506200110c8362001dd3565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515620011ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5073ffffffffffffffffffffffffffffffffffffffff841615156200121a576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801562001213573d6000803e3d6000fd5b5062001311565b50826200124473ffffffffffffffffffffffffffffffffffffffff82163063ffffffff62001e0f16565b91506200126f73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff62001f4d16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156200130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620013a9848462001a91565b620013bb3330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c4544000000000000000000000000000060208201529015156200145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506200146985858562001c91565b5050505050565b60009182526020828152604080842092845291905290205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620014f07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620015023330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c454400000000000000000000000000006020820152901515620015a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620015d07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d3088875b600080848484620015e8620020c4565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b83811015620016485781810151838201526020016200162e565b50505050905090810190601f168015620016765780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156200169a573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526000602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f90565b600062000df37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a62001470565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200179c62000dc6565b14905090565b60408051600080825260208201909252620017c19084908490620017ec565b9392505050565b7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90565b600080848484620017fc620020d5565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b838110156200185c57818101518382015260200162001842565b50505050905090810190601f1680156200188a5780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080158015620018ae573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526001602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b6000806200191e62001721565b905073ffffffffffffffffffffffffffffffffffffffff81161580159062001a6457506040517ffdef910600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483019081528782166024840152604483018790526080606484019081528651608485015286519285169363fdef9106938b938b938b938b9360a490910190602085019080838360005b83811015620019e4578181015183820152602001620019ca565b50505050905090810190601f16801562001a125780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801562001a3557600080fd5b505af115801562001a4a573d6000803e3d6000fd5b505050506040513d602081101562001a6157600080fd5b50515b9695505050505050565b60408051600080825260208201909252620017c19084908490620015d8565b4390565b6060620017c1838362001fde565b8051602002815290565b600062001ab7848462001470565b905073ffffffffffffffffffffffffffffffffffffffff81161562001b965760408051808201909152601981527f4b45524e454c5f494e56414c49445f4150505f4348414e474500000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8281169084161462001b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001ba3565b62001ba384848462001c91565b50505050565b62001bb362000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562001c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001c8f62001c6162001a8d565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff6200203b16565b565b62001c9c8162001dd3565b60408051808201909152601781527f4b45524e454c5f4150505f4e4f545f434f4e5452414354000000000000000000602082015290151562001d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5060008381526020818152604080832085845282529182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915582519081529151849286927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b2392918290030190a3505050565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff8316151562001dfe576000915062001e09565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818062001e9e86846200203f565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151562001f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009062000db7858262002071565b6040805160028082526060808301845292602083019080388339019050509050828160008151811015156200200f57fe5b6020908102909101015280518290829060019081106200202b57fe5b6020908102909101015292915050565b9055565b6000806000806040516020818751602089018a5afa925060008311156200206557805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115620020ba573d8015620020a65760208114620020b057620020b8565b60019350620020b8565b600183511493505b505b5090949350505050565b6040516106fd80620020e783390190565b6040516106ed80620027e4833901905600608060405234801561001057600080fd5b506040516106fd3803806106fd8339810160409081528151602083015191830151909201828282600061004b8464010000000061017a810204565b61005d836401000000006101a2810204565b61006f836401000000006101d9810204565b90506000825111156101185761008d816401000000006102a9810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b50505050610145610137836101d9640100000000026401000000009004565b6401000000006102d6810204565b6101676101596401000000006102fb810204565b6401000000006102a9810204565b151561017257600080fd5b505050610354565b61019f6000805160206106bd8339815191528264010000000061032661032682021704565b50565b61019f7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b8264010000000061032661032682021704565b60006101ec64010000000061032a810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506040513d60208110156102a157600080fd5b505192915050565b600080600160a060020a03831615156102c557600091506102d0565b823b90506000811191505b50919050565b61019f6000805160206106dd8339815191528264010000000061032661032682021704565b60006103216000805160206106dd83398151915264010000000061031e61035082021704565b905090565b9055565b60006103216000805160206106bd83398151915264010000000061031e61035082021704565b5490565b61035a806103636000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101f2945050505050565b505050005b34801561013757600080fd5b50610140610233565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610238565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b50610140610263565b3480156101da57600080fd5b5061019061028e565b60006101ed6102b9565b905090565b60006101fd836102e4565b151561020857600080fd5b612710905060008083516020850186855a03f43d604051816000823e82801561022f578282f35b8282fd5b600190565b60006101ed7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea61031e565b60006101ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61031e565b60006101ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61031e565b60006101ed7fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e61031e565b60008073ffffffffffffffffffffffffffffffffffffffff8316151561030d5760009150610318565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582011dde276c5373896f3034af8449357ad9bb5fbfcfd199a85aeef252b0a933c3b00294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137bdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e608060405234801561001057600080fd5b506040516106ed3803806106ed8339810160409081528151602083015191830151909201828282600061004b84640100000000610124810204565b61005d8364010000000061014c810204565b61006f83640100000000610183810204565b90506000825111156101185761008d81640100000000610253810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b505050505050506102b3565b6101496000805160206106cd833981519152826401000000006103d761028082021704565b50565b6101497fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b826401000000006103d761028082021704565b6000610196640100000000610284810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561022157600080fd5b505af1158015610235573d6000803e3d6000fd5b505050506040513d602081101561024b57600080fd5b505192915050565b600080600160a060020a038316151561026f576000915061027a565b823b90506000811191505b50919050565b9055565b60006102aa6000805160206106cd8339815191526401000000006103cf6102af82021704565b905090565b5490565b61040b806102c26000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582037fda6007dae017dcd94ca2548a6ac816a59129ff8c0a1770a132538939f53c200294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137ba165627a7a72305820c2bff56086d2820109f8d53ed1e2ee4e697b8c9738174e20b54892283567b9210029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x608060405260043610620001865763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146200018b5780631113ed0d14620001b7578063178e607914620001e157806332f0a3b514620001f9578063397edd41146200023a5780634558850c14620002b7578063485cc95514620002d5578063756f6049146200030e5780637e7db6e1146200032657806380cd5ac3146200035757806386070cfe146200038b5780638b3dd74914620003a35780638c61757d14620003bb5780638ea8dc9d14620003d6578063958fde8214620003ee5780639d4941d81462000422578063ae5b25401462000453578063be00bbd8146200048a578063c050a7a614620004a8578063d162f8b01462000525578063db8a61d4146200059e578063de28735914620005b6578063de4796ed14620005ce578063e156a8f314620005e6578063e8187ff0146200061a578063ede658b01462000632578063fdef910614620006ab578063ff289fc5146200072a575b600080fd5b3480156200019857600080fd5b50620001a36200075e565b604080519115158252519081900360200190f35b348015620001c457600080fd5b50620001cf6200078c565b60408051918252519081900360200190f35b348015620001ee57600080fd5b50620001cf620007b0565b3480156200020657600080fd5b5062000211620007d4565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156200024757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff16953695946064949201919081908401838280828437509497505050509135151592506200081e915050565b348015620002c457600080fd5b5062000211600435602435620009dd565b348015620002e257600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004358116906024351662000a0d565b005b3480156200031b57600080fd5b50620001cf62000c6c565b3480156200033357600080fd5b50620001a373ffffffffffffffffffffffffffffffffffffffff6004351662000c90565b3480156200036457600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000c96565b3480156200039857600080fd5b50620001cf62000dc0565b348015620003b057600080fd5b50620001cf62000dc6565b348015620003c857600080fd5b506200030c60043562000df8565b348015620003e357600080fd5b50620001cf62000eff565b348015620003fb57600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000f23565b3480156200042f57600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004351662001044565b3480156200046057600080fd5b506200030c60043560243573ffffffffffffffffffffffffffffffffffffffff604435166200137c565b3480156200049757600080fd5b506200021160043560243562001470565b348015620004b557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff1695369594606494920191908190840183828082843750949750505050913515159250620014a1915050565b3480156200053257600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620015d89650505050505050565b348015620005ab57600080fd5b50620001cf620016fd565b348015620005c357600080fd5b506200021162001721565b348015620005db57600080fd5b50620001a36200176f565b348015620005f357600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff60043516602435620017a2565b3480156200062757600080fd5b50620001cf620017c8565b3480156200063f57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620017ec9650505050505050565b348015620006b857600080fd5b50604080516020601f606435600481810135928301849004840285018401909552818452620001a39473ffffffffffffffffffffffffffffffffffffffff8135811695602480359092169560443595369560849401918190840183828082843750949750620019119650505050505050565b3480156200073757600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff6004351660243562001a6e565b6000806200076b62000dc6565b90508015801590620007865750806200078362001a8d565b10155b91505090565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c90565b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb90565b60015460009081527f9e3eae70920eeef6013879bf9155b985893698c145361c31365929723678b257602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd06200086d7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620008853330846200087f8562001a9f565b62001911565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620009265781810151838201526020016200090c565b50505050905090810190601f168015620009545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620009907ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d308887620017ec565b92508315620009d357620009d37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb88856200137c565b5050949350505050565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600062000a1962000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062000ac362001ba9565b62000b107ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a8562001c91565b62000b3c307fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a620017a2565b90508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000bda57600080fd5b505af115801562000bef573d6000803e3d6000fd5b5062000c4392507fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb91507fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90508362001c91565b50507f7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d160015550565b7fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f890565b50600190565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000ce57ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000cf73330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db791879187916200081e565b95945050505050565b60015481565b600062000df37febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e62001dcf565b905090565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000e457fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb8362001a91565b62000e573330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505050600155565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd081565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000f727ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000f843330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562001024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db79187918791620014a1565b6000806000620010548462000c90565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515620010f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620010ff620007d4565b92506200110c8362001dd3565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515620011ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5073ffffffffffffffffffffffffffffffffffffffff841615156200121a576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801562001213573d6000803e3d6000fd5b5062001311565b50826200124473ffffffffffffffffffffffffffffffffffffffff82163063ffffffff62001e0f16565b91506200126f73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff62001f4d16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156200130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620013a9848462001a91565b620013bb3330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c4544000000000000000000000000000060208201529015156200145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506200146985858562001c91565b5050505050565b60009182526020828152604080842092845291905290205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620014f07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620015023330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c454400000000000000000000000000006020820152901515620015a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620015d07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d3088875b600080848484620015e8620020c4565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b83811015620016485781810151838201526020016200162e565b50505050905090810190601f168015620016765780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156200169a573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526000602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f90565b600062000df37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a62001470565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200179c62000dc6565b14905090565b60408051600080825260208201909252620017c19084908490620017ec565b9392505050565b7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90565b600080848484620017fc620020d5565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b838110156200185c57818101518382015260200162001842565b50505050905090810190601f1680156200188a5780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080158015620018ae573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526001602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b6000806200191e62001721565b905073ffffffffffffffffffffffffffffffffffffffff81161580159062001a6457506040517ffdef910600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483019081528782166024840152604483018790526080606484019081528651608485015286519285169363fdef9106938b938b938b938b9360a490910190602085019080838360005b83811015620019e4578181015183820152602001620019ca565b50505050905090810190601f16801562001a125780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801562001a3557600080fd5b505af115801562001a4a573d6000803e3d6000fd5b505050506040513d602081101562001a6157600080fd5b50515b9695505050505050565b60408051600080825260208201909252620017c19084908490620015d8565b4390565b6060620017c1838362001fde565b8051602002815290565b600062001ab7848462001470565b905073ffffffffffffffffffffffffffffffffffffffff81161562001b965760408051808201909152601981527f4b45524e454c5f494e56414c49445f4150505f4348414e474500000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8281169084161462001b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001ba3565b62001ba384848462001c91565b50505050565b62001bb362000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562001c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001c8f62001c6162001a8d565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff6200203b16565b565b62001c9c8162001dd3565b60408051808201909152601781527f4b45524e454c5f4150505f4e4f545f434f4e5452414354000000000000000000602082015290151562001d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5060008381526020818152604080832085845282529182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915582519081529151849286927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b2392918290030190a3505050565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff8316151562001dfe576000915062001e09565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818062001e9e86846200203f565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151562001f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009062000db7858262002071565b6040805160028082526060808301845292602083019080388339019050509050828160008151811015156200200f57fe5b6020908102909101015280518290829060019081106200202b57fe5b6020908102909101015292915050565b9055565b6000806000806040516020818751602089018a5afa925060008311156200206557805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115620020ba573d8015620020a65760208114620020b057620020b8565b60019350620020b8565b600183511493505b505b5090949350505050565b6040516106fd80620020e783390190565b6040516106ed80620027e4833901905600608060405234801561001057600080fd5b506040516106fd3803806106fd8339810160409081528151602083015191830151909201828282600061004b8464010000000061017a810204565b61005d836401000000006101a2810204565b61006f836401000000006101d9810204565b90506000825111156101185761008d816401000000006102a9810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b50505050610145610137836101d9640100000000026401000000009004565b6401000000006102d6810204565b6101676101596401000000006102fb810204565b6401000000006102a9810204565b151561017257600080fd5b505050610354565b61019f6000805160206106bd8339815191528264010000000061032661032682021704565b50565b61019f7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b8264010000000061032661032682021704565b60006101ec64010000000061032a810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506040513d60208110156102a157600080fd5b505192915050565b600080600160a060020a03831615156102c557600091506102d0565b823b90506000811191505b50919050565b61019f6000805160206106dd8339815191528264010000000061032661032682021704565b60006103216000805160206106dd83398151915264010000000061031e61035082021704565b905090565b9055565b60006103216000805160206106bd83398151915264010000000061031e61035082021704565b5490565b61035a806103636000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101f2945050505050565b505050005b34801561013757600080fd5b50610140610233565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610238565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b50610140610263565b3480156101da57600080fd5b5061019061028e565b60006101ed6102b9565b905090565b60006101fd836102e4565b151561020857600080fd5b612710905060008083516020850186855a03f43d604051816000823e82801561022f578282f35b8282fd5b600190565b60006101ed7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea61031e565b60006101ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61031e565b60006101ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61031e565b60006101ed7fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e61031e565b60008073ffffffffffffffffffffffffffffffffffffffff8316151561030d5760009150610318565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582011dde276c5373896f3034af8449357ad9bb5fbfcfd199a85aeef252b0a933c3b00294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137bdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e608060405234801561001057600080fd5b506040516106ed3803806106ed8339810160409081528151602083015191830151909201828282600061004b84640100000000610124810204565b61005d8364010000000061014c810204565b61006f83640100000000610183810204565b90506000825111156101185761008d81640100000000610253810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b505050505050506102b3565b6101496000805160206106cd833981519152826401000000006103d761028082021704565b50565b6101497fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b826401000000006103d761028082021704565b6000610196640100000000610284810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561022157600080fd5b505af1158015610235573d6000803e3d6000fd5b505050506040513d602081101561024b57600080fd5b505192915050565b600080600160a060020a038316151561026f576000915061027a565b823b90506000811191505b50919050565b9055565b60006102aa6000805160206106cd8339815191526401000000006103cf6102af82021704565b905090565b5490565b61040b806102c26000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582037fda6007dae017dcd94ca2548a6ac816a59129ff8c0a1770a132538939f53c200294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137ba165627a7a72305820c2bff56086d2820109f8d53ed1e2ee4e697b8c9738174e20b54892283567b9210029",
  "sourceMap": "441:10209:52:-;;;1305:110;8:9:-1;5:2;;;30:1;27;20:12;5:2;1305:110:52;;;;;;;;;;;;;1355:54;;;;1389:9;:7;;;;:9;:::i;:::-;1305:110;441:10209;;590:84:34;615:24:32;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:34;-1:-1:-1;;637:13:34;;;;:30;:::i;:::-;590:84::o;881:137:32:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:32;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;-1:-1:-1;1824:61:32;-1:-1:-1;;;;;;;;;;;1872:12:32;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:39:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;441:10209:52:-;;;;;;;",
  "deployedSourceMap": "441:10209:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:32;;;;;;;;;;;;;;;;;;;;;;7920:87:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7920:87:52;;;;;;;;;;;;;;;;;;;;7816:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7816:99:52;;;;8631:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8631:133:52;;;;;;;;;;;;;;;;;;;;;;;3739:675;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3739:675:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3739:675:52;;-1:-1:-1;;;;3739:675:52;;;;;-1:-1:-1;3739:675:52;;-1:-1:-1;;3739:675:52;93:61:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;93:61:55;;;;;;;1819:537:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1819:537:52;;;;;;;;;;;;;;7614:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7614:91:52;;;;1659:99:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:40;;;;;;;2693:262:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2693:262:52;;;;;;;;;160:33:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;160:33:55;;;;881:137:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:32;;;;7233:220:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7233:220:52;;;;;729:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;729:109:52;;;;4763:274;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4763:274:52;;;;;;;;;836:623:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:40;;;;;;;6884:191:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6884:191:52;;;;;;;;;;;8368:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8368:130:52;;;;;;;5832:687;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5832:687:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5832:687:52;;-1:-1:-1;;;;5832:687:52;;;;;-1:-1:-1;5832:687:52;;-1:-1:-1;;5832:687:52;1875:292:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1875:292:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1875:292:48;;-1:-1:-1;1875:292:48;;-1:-1:-1;;;;;;;1875:292:48;7710:101:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7710:101:52;;;;8844:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8844:132:52;;;;287:117:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:34;;;;433:157:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;433:157:48;;;;;;;;;8012:99:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8012:99:52;;;;866:300:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;866:300:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;866:300:48;;-1:-1:-1;866:300:48;;-1:-1:-1;;;;;;;866:300:48;9423:311:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9423:311:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9423:311:52;;-1:-1:-1;9423:311:52;;-1:-1:-1;;;;;;;9423:311:52;1384:164:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1384:164:48;;;;;;;;;1128:208:32;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:32;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;7920:87:52:-;426:66:53;7920:87:52;:::o;7816:99::-;1368:66:53;7816:99:52;:::o;8631:133::-;8711:25;8738:18;8680:7;8706:51;;;:31;;:51;:31;:51;;;;;8631:133;:::o;3739:675::-;3945:17;772:66;3887:39;1242:66:53;3919:6:52;3887:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;:::-;10482:13;:107::i;:::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10461:169:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3978:58:52;1242:66:53;4019:6:52;4027:8;3978:12;:58::i;:::-;4057:45;4069:4;4075:6;4083:18;4057:11;:45::i;:::-;4046:56;;4319:11;4315:93;;;4346:51;1368:66:53;4380:6:52;4388:8;4346:6;:51::i;:::-;3739:675;;;;;;;;:::o;93:61:55:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1819:537:52:-;2108:8;615:24:32;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;;1909:13:52;:11;:13::i;:::-;1957:72;1242:66:53;552;2020:8:52;1957:7;:72::i;:::-;2124:44;2136:4;552:66:53;2124:11:52;:44::i;:::-;2108:61;;2179:3;:14;;;2194:19;2179:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2179:35:52;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2224:66:52;;-1:-1:-1;1368:66:53;;-1:-1:-1;552:66:53;;-1:-1:-1;2286:3:52;2224:7;:66::i;:::-;-1:-1:-1;;680:66:53;2322:27:52;2301:48;-1:-1:-1;1819:537:52:o;7614:91::-;1115:66:53;7614:91:52;:::o;1659:99:40:-;-1:-1:-1;1747:4:40;;1659:99::o;2693:262:52:-;2855:17;772:66;2797:39;1242:66:53;2829:6:52;2797:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:52;-1:-1:-1;2928:12:52;;;2938:1;2928:12;;;;;;;;;2895:53;;2910:6;;2918:8;;2895:14;:53::i;:::-;2888:60;2693:262;-1:-1:-1;;;;;2693:262:52:o;160:33:55:-;;;;:::o;881:137:32:-;936:7;962:49;345:66;962:47;:49::i;:::-;955:56;;881:137;:::o;7233:220:52:-;772:66;7339:51;1368:66:53;7370:19:52;7339:3;:51::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:52;-1:-1:-1;;;7406:18:52;:40;7233:220::o;729:109::-;772:66;729:109;:::o;4763:274::-;4931:17;772:66;4873:39;1242:66:53;4905:6:52;4873:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:52;-1:-1:-1;5010:12:52;;;5020:1;5010:12;;;;;;;;;4971:59;;4992:6;;5000:8;;4971:20;:59::i;836:623:40:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:40;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:40;-1:-1:-1;1096:13:40;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:40;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:40;1092:307;;;-1:-1:-1;1244:6:40;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:40;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:40;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;6884:191:52:-;772:66;6996:23;7000:10;7012:6;6996:3;:23::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:52;;7035:33;7043:10;7055:6;7063:4;7035:7;:33::i;:::-;6884:191;;;;;:::o;8368:130::-;8441:7;8467:16;;;;;;;;;;;:24;;;;;;;;;;;;8368:130::o;5832:687::-;6044:17;772:66;5986:39;1242:66:53;6018:6:52;5986:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:52;-1:-1:-1;6077:58:52;1242:66:53;6118:6:52;6126:8;6077:12;:58::i;:::-;6156:51;6174:4;6180:6;6188:18;1875:292:48;1977:14;2003:20;2045:7;2054:6;2062:18;2026:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2026:55:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2096:42:48;;;;;;;;2124:5;2096:42;;;;;;;;;;;;2003:78;;-1:-1:-1;2096:42:48;;;;;;;;;;2155:5;1875:292;-1:-1:-1;;;;1875:292:48:o;7710:101:52:-;1242:66:53;7710:101:52;:::o;8844:132::-;8880:4;8908:60;1368:66:53;552;8908:6:52;:60::i;287:117:34:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;433:157:48:-;570:12;;;503:19;570:12;;;;;;;;;541:42;;553:7;;562:6;;541:11;:42::i;:::-;534:49;433:157;-1:-1:-1;;;433:157:48:o;8012:99:52:-;552:66:53;8012:99:52;:::o;866:300:48:-;962:19;993:25;1045:7;1054:6;1062:18;1021:60;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1021:60:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1096:41:48;;;;;;;;1124:4;1096:41;;;;;;;;;;;;993:88;;-1:-1:-1;1096:41:48;;;;;;;;;;1154:5;866:300;-1:-1:-1;;;;866:300:48:o;9423:311:52:-;9524:4;9540:15;9558:5;:3;:5::i;:::-;9540:23;-1:-1:-1;9580:33:52;;;;;;;:147;;-1:-1:-1;9676:51:52;;;;;:24;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;;;9701:4;;9707:6;;9715:5;;9722:4;;9676:51;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9676:51:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9676:51:52;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9676:51:52;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9676:51:52;9580:147;9573:154;9423:311;-1:-1:-1;;;;;;9423:311:52:o;1384:164:48:-;1528:12;;;1460:14;1528:12;;;;;;;;;1493:48;;1511:7;;1520:6;;1493:17;:48::i;347:94:37:-;422:12;347:94;:::o;303:126:14:-;363:11;393:29;405:2;418;393:3;:29::i;142:539:25:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;9976:414:52:-;10067:11;10081:26;10088:10;10100:6;10081;:26::i;:::-;10067:40;-1:-1:-1;10121:17:52;;;;10117:267;;10284:24;;;;;;;;;;;;;;;;;10271:11;;;;;;;;10263:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10263:46:52;;10117:267;;;10340:33;10348:10;10360:6;10368:4;10340:7;:33::i;:::-;9976:414;;;;:::o;1447:123:32:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;:::-;1447:123::o;9740:230:52:-;9834:16;9845:4;9834:10;:16::i;:::-;9852:22;;;;;;;;;;;;;;;;;;9826:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;9826:49:52;-1:-1:-1;9885:4:52;:16;;;;;;;;;;;:24;;;;;;;;;:31;;;;;;;;;;;;;9931:32;;;;;;;9885:24;;:16;;9931:32;;;;;;;;;9740:230;;;:::o;519:134:39:-;630:15;;620:27::o;426:244:33:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:36:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:36;;;;;;;;25:18:-1;;61:17;;4708:91:36;182:15:-1;4744:25:36;179:29:-1;160:49;;4656:7:36;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:36;-1:-1:-1;4898:46:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:36;-1:-1:-1;4962:12:36;4578:403;-1:-1:-1;;;;;4578:403:36:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:36;;;;;;;;25:18:-1;;61:17;;3232:101:36;182:15:-1;3268:17:36;179:29:-1;160:49;;3184:4:36;;3350:47;3372:6;3232:101;3350:21;:47::i;1717:148:14:-;1804:16;;;1818:1;1804:16;;;1777:11;1804:16;;;;;1777:11;1804:16;;;;;105:10:-1;1804:16:14;88:34:-1;136:17;;-1:-1;1804:16:14;1800:20;;1837:2;1830:1;1832;1830:4;;;;;;;;;;;;;;;;;;:9;1849:4;;1856:2;;1849:1;;1851;;1849:4;;;;;;;;;;;;;;:9;1717:148;;-1:-1:-1;;1717:148:14:o;1028:119:39:-;1117:22;;1115:26::o;2148:774:36:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:36;;2911:3;;-1:-1:-1;2148:774:36;-1:-1:-1;;;2148:774:36:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:36;;800:1342;-1:-1:-1;;;;800:1342:36:o;441:10209:52:-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"./IKernel.sol\";\nimport \"./KernelConstants.sol\";\nimport \"./KernelStorage.sol\";\nimport \"../acl/IACL.sol\";\nimport \"../acl/ACLSyntaxSugar.sol\";\nimport \"../common/ConversionHelpers.sol\";\nimport \"../common/IsContract.sol\";\nimport \"../common/Petrifiable.sol\";\nimport \"../common/VaultRecoverable.sol\";\nimport \"../factory/AppProxyFactory.sol\";\nimport \"../lib/misc/ERCProxy.sol\";\n\n\n// solium-disable-next-line max-len\ncontract Kernel is IKernel, KernelStorage, KernelAppIds, KernelNamespaceConstants, Petrifiable, IsContract, VaultRecoverable, AppProxyFactory, ACLSyntaxSugar {\n    /* Hardcoded constants to save gas\n    bytes32 public constant APP_MANAGER_ROLE = keccak256(\"APP_MANAGER_ROLE\");\n    */\n    bytes32 public constant APP_MANAGER_ROLE = 0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0;\n\n    string private constant ERROR_APP_NOT_CONTRACT = \"KERNEL_APP_NOT_CONTRACT\";\n    string private constant ERROR_INVALID_APP_CHANGE = \"KERNEL_INVALID_APP_CHANGE\";\n    string private constant ERROR_AUTH_FAILED = \"KERNEL_AUTH_FAILED\";\n\n    /**\n    * @dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n    * @param _shouldPetrify Immediately petrify this instance so that it can never be initialized\n    */\n    constructor(bool _shouldPetrify) public {\n        if (_shouldPetrify) {\n            petrify();\n        }\n    }\n\n    /**\n    * @dev Initialize can only be called once. It saves the block number in which it was initialized.\n    * @notice Initialize this kernel instance along with its ACL and set `_permissionsCreator` as the entity that can create other permissions\n    * @param _baseAcl Address of base ACL app\n    * @param _permissionsCreator Entity that will be given permission over createPermission\n    */\n    function initialize(IACL _baseAcl, address _permissionsCreator) public onlyInit {\n        initialized();\n\n        // Set ACL base\n        _setApp(KERNEL_APP_BASES_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID, _baseAcl);\n\n        // Create ACL instance and attach it as the default ACL app\n        IACL acl = IACL(newAppProxy(this, KERNEL_DEFAULT_ACL_APP_ID));\n        acl.initialize(_permissionsCreator);\n        _setApp(KERNEL_APP_ADDR_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID, acl);\n\n        recoveryVaultAppId = KERNEL_DEFAULT_VAULT_APP_ID;\n    }\n\n    /**\n    * @dev Create a new instance of an app linked to this kernel\n    * @notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newAppInstance(bytes32 _appId, address _appBase)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        return newAppInstance(_appId, _appBase, new bytes(0), false);\n    }\n\n    /**\n    * @dev Create a new instance of an app linked to this kernel and set its base\n    *      implementation if it was not already set\n    * @notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @param _initializePayload Payload for call made by the proxy during its construction to initialize\n    * @param _setDefault Whether the app proxy app is the default one.\n    *        Useful when the Kernel needs to know of an instance of a particular app,\n    *        like Vault for escape hatch mechanism.\n    * @return AppProxy instance\n    */\n    function newAppInstance(bytes32 _appId, address _appBase, bytes _initializePayload, bool _setDefault)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        _setAppIfNew(KERNEL_APP_BASES_NAMESPACE, _appId, _appBase);\n        appProxy = newAppProxy(this, _appId, _initializePayload);\n        // By calling setApp directly and not the internal functions, we make sure the params are checked\n        // and it will only succeed if sender has permissions to set something to the namespace.\n        if (_setDefault) {\n            setApp(KERNEL_APP_ADDR_NAMESPACE, _appId, appProxy);\n        }\n    }\n\n    /**\n    * @dev Create a new pinned instance of an app linked to this kernel\n    * @notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newPinnedAppInstance(bytes32 _appId, address _appBase)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        return newPinnedAppInstance(_appId, _appBase, new bytes(0), false);\n    }\n\n    /**\n    * @dev Create a new pinned instance of an app linked to this kernel and set\n    *      its base implementation if it was not already set\n    * @notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @param _initializePayload Payload for call made by the proxy during its construction to initialize\n    * @param _setDefault Whether the app proxy app is the default one.\n    *        Useful when the Kernel needs to know of an instance of a particular app,\n    *        like Vault for escape hatch mechanism.\n    * @return AppProxy instance\n    */\n    function newPinnedAppInstance(bytes32 _appId, address _appBase, bytes _initializePayload, bool _setDefault)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        _setAppIfNew(KERNEL_APP_BASES_NAMESPACE, _appId, _appBase);\n        appProxy = newAppProxyPinned(this, _appId, _initializePayload);\n        // By calling setApp directly and not the internal functions, we make sure the params are checked\n        // and it will only succeed if sender has permissions to set something to the namespace.\n        if (_setDefault) {\n            setApp(KERNEL_APP_ADDR_NAMESPACE, _appId, appProxy);\n        }\n    }\n\n    /**\n    * @dev Set the resolving address of an app instance or base implementation\n    * @notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n    * @param _namespace App namespace to use\n    * @param _appId Identifier for app\n    * @param _app Address of the app instance or base implementation\n    * @return ID of app\n    */\n    function setApp(bytes32 _namespace, bytes32 _appId, address _app)\n        public\n        auth(APP_MANAGER_ROLE, arr(_namespace, _appId))\n    {\n        _setApp(_namespace, _appId, _app);\n    }\n\n    /**\n    * @dev Set the default vault id for the escape hatch mechanism\n    * @param _recoveryVaultAppId Identifier of the recovery vault app\n    */\n    function setRecoveryVaultAppId(bytes32 _recoveryVaultAppId)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_ADDR_NAMESPACE, _recoveryVaultAppId))\n    {\n        recoveryVaultAppId = _recoveryVaultAppId;\n    }\n\n    // External access to default app id and namespace constants to mimic default getters for constants\n    /* solium-disable function-order, mixedcase */\n    function CORE_NAMESPACE() external pure returns (bytes32) { return KERNEL_CORE_NAMESPACE; }\n    function APP_BASES_NAMESPACE() external pure returns (bytes32) { return KERNEL_APP_BASES_NAMESPACE; }\n    function APP_ADDR_NAMESPACE() external pure returns (bytes32) { return KERNEL_APP_ADDR_NAMESPACE; }\n    function KERNEL_APP_ID() external pure returns (bytes32) { return KERNEL_CORE_APP_ID; }\n    function DEFAULT_ACL_APP_ID() external pure returns (bytes32) { return KERNEL_DEFAULT_ACL_APP_ID; }\n    /* solium-enable function-order, mixedcase */\n\n    /**\n    * @dev Get the address of an app instance or base implementation\n    * @param _namespace App namespace to use\n    * @param _appId Identifier for app\n    * @return Address of the app\n    */\n    function getApp(bytes32 _namespace, bytes32 _appId) public view returns (address) {\n        return apps[_namespace][_appId];\n    }\n\n    /**\n    * @dev Get the address of the recovery Vault instance (to recover funds)\n    * @return Address of the Vault\n    */\n    function getRecoveryVault() public view returns (address) {\n        return apps[KERNEL_APP_ADDR_NAMESPACE][recoveryVaultAppId];\n    }\n\n    /**\n    * @dev Get the installed ACL app\n    * @return ACL app\n    */\n    function acl() public view returns (IACL) {\n        return IACL(getApp(KERNEL_APP_ADDR_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID));\n    }\n\n    /**\n    * @dev Function called by apps to check ACL on kernel or to check permission status\n    * @param _who Sender of the original call\n    * @param _where Address of the app\n    * @param _what Identifier for a group of actions in app\n    * @param _how Extra data for ACL auth\n    * @return Boolean indicating whether the ACL allows the role or not.\n    *         Always returns false if the kernel hasn't been initialized yet.\n    */\n    function hasPermission(address _who, address _where, bytes32 _what, bytes _how) public view returns (bool) {\n        IACL defaultAcl = acl();\n        return address(defaultAcl) != address(0) && // Poor man's initialization check (saves gas)\n            defaultAcl.hasPermission(_who, _where, _what, _how);\n    }\n\n    function _setApp(bytes32 _namespace, bytes32 _appId, address _app) internal {\n        require(isContract(_app), ERROR_APP_NOT_CONTRACT);\n        apps[_namespace][_appId] = _app;\n        emit SetApp(_namespace, _appId, _app);\n    }\n\n    function _setAppIfNew(bytes32 _namespace, bytes32 _appId, address _app) internal {\n        address app = getApp(_namespace, _appId);\n        if (app != address(0)) {\n            // The only way to set an app is if it passes the isContract check, so no need to check it again\n            require(app == _app, ERROR_INVALID_APP_CHANGE);\n        } else {\n            _setApp(_namespace, _appId, _app);\n        }\n    }\n\n    modifier auth(bytes32 _role, uint256[] memory _params) {\n        require(\n            hasPermission(msg.sender, address(this), _role, ConversionHelpers.dangerouslyCastUintArrayToBytes(_params)),\n            ERROR_AUTH_FAILED\n        );\n        _;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/kernel/Kernel.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
    "exportedSymbols": {
      "Kernel": [
        13092
      ]
    },
    "id": 13093,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12602,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:52"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 12603,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 12601,
        "src": "25:23:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 12604,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 13115,
        "src": "49:31:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 12605,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 13194,
        "src": "81:29:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 12606,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 9674,
        "src": "111:25:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 12607,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 9653,
        "src": "137:35:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ConversionHelpers.sol",
        "file": "../common/ConversionHelpers.sol",
        "id": 12608,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 10553,
        "src": "173:41:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 12609,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 10839,
        "src": "215:34:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Petrifiable.sol",
        "file": "../common/Petrifiable.sol",
        "id": 12610,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 10872,
        "src": "250:35:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 12611,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 11423,
        "src": "286:40:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
        "file": "../factory/AppProxyFactory.sol",
        "id": 12612,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 12240,
        "src": "327:40:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/misc/ERCProxy.sol",
        "file": "../lib/misc/ERCProxy.sol",
        "id": 12613,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 14226,
        "src": "368:34:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12614,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12600,
              "src": "460:7:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$12600",
                "typeString": "contract IKernel"
              }
            },
            "id": 12615,
            "nodeType": "InheritanceSpecifier",
            "src": "460:7:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12616,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13193,
              "src": "469:13:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$13193",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 12617,
            "nodeType": "InheritanceSpecifier",
            "src": "469:13:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12618,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13104,
              "src": "484:12:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$13104",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 12619,
            "nodeType": "InheritanceSpecifier",
            "src": "484:12:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12620,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13114,
              "src": "498:24:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$13114",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 12621,
            "nodeType": "InheritanceSpecifier",
            "src": "498:24:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12622,
              "name": "Petrifiable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10871,
              "src": "524:11:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Petrifiable_$10871",
                "typeString": "contract Petrifiable"
              }
            },
            "id": 12623,
            "nodeType": "InheritanceSpecifier",
            "src": "524:11:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12624,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10838,
              "src": "537:10:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$10838",
                "typeString": "contract IsContract"
              }
            },
            "id": 12625,
            "nodeType": "InheritanceSpecifier",
            "src": "537:10:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12626,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11422,
              "src": "549:16:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$11422",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 12627,
            "nodeType": "InheritanceSpecifier",
            "src": "549:16:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12628,
              "name": "AppProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12239,
              "src": "567:15:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppProxyFactory_$12239",
                "typeString": "contract AppProxyFactory"
              }
            },
            "id": 12629,
            "nodeType": "InheritanceSpecifier",
            "src": "567:15:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12630,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9577,
              "src": "584:14:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$9577",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 12631,
            "nodeType": "InheritanceSpecifier",
            "src": "584:14:52"
          }
        ],
        "contractDependencies": [
          9577,
          10662,
          10712,
          10810,
          10838,
          10871,
          11200,
          11422,
          12239,
          12559,
          12600,
          13104,
          13114,
          13193
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 13092,
        "linearizedBaseContracts": [
          13092,
          9577,
          12239,
          11422,
          10838,
          10662,
          10871,
          10810,
          11200,
          13114,
          13104,
          13193,
          12600,
          10712,
          12559
        ],
        "name": "Kernel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 12634,
            "name": "APP_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "729:109:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 12632,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:52",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307862366439323730386633643438313761666331303631343764393639653232396365643563343665363565306135303032613064333931323837373632626430",
              "id": 12633,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "772:66:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_82704613664676796936649533353167530996754393993849268174999512363230727384016_by_1",
                "typeString": "int_const 8270...(69 digits omitted)...4016"
              },
              "value": "0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12637,
            "name": "ERROR_APP_NOT_CONTRACT",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "845:74:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 12635,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "845:6:52",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f4150505f4e4f545f434f4e5452414354",
              "id": 12636,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "894:25:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9836ab188560c8863264933b2423feee77bc53fbabf48ddf22703b0c91862812",
                "typeString": "literal_string \"KERNEL_APP_NOT_CONTRACT\""
              },
              "value": "KERNEL_APP_NOT_CONTRACT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12640,
            "name": "ERROR_INVALID_APP_CHANGE",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "925:78:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 12638,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "925:6:52",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f494e56414c49445f4150505f4348414e4745",
              "id": 12639,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "976:27:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e4acfdbe2a685f787d10384f7152f5de5d8b0224aa0b8e04fb5d376ed2b3e513",
                "typeString": "literal_string \"KERNEL_INVALID_APP_CHANGE\""
              },
              "value": "KERNEL_INVALID_APP_CHANGE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12643,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "1009:64:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 12641,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1009:6:52",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f415554485f4641494c4544",
              "id": 12642,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1053:20:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2f44e6c32cf650dbae4931fdeafb7f4804fc17f8169bd4fb754968e09d978601",
                "typeString": "literal_string \"KERNEL_AUTH_FAILED\""
              },
              "value": "KERNEL_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 12654,
              "nodeType": "Block",
              "src": "1345:70:52",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12648,
                    "name": "_shouldPetrify",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12645,
                    "src": "1359:14:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12653,
                  "nodeType": "IfStatement",
                  "src": "1355:54:52",
                  "trueBody": {
                    "id": 12652,
                    "nodeType": "Block",
                    "src": "1375:34:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12649,
                            "name": "petrify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10870,
                            "src": "1389:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 12650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1389:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12651,
                        "nodeType": "ExpressionStatement",
                        "src": "1389:9:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n@param _shouldPetrify Immediately petrify this instance so that it can never be initialized",
            "id": 12655,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12645,
                  "name": "_shouldPetrify",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "1317:19:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12644,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1316:21:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12647,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1345:0:52"
            },
            "scope": 13092,
            "src": "1305:110:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12698,
              "nodeType": "Block",
              "src": "1899:457:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 12664,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "1909:11:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 12665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1909:13:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12666,
                  "nodeType": "ExpressionStatement",
                  "src": "1909:13:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12668,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "1965:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12669,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13100,
                        "src": "1993:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12670,
                        "name": "_baseAcl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12657,
                        "src": "2020:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 12667,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13028,
                      "src": "1957:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1957:72:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12672,
                  "nodeType": "ExpressionStatement",
                  "src": "1957:72:52"
                },
                {
                  "assignments": [
                    12674
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12674,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 12699,
                      "src": "2108:8:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12673,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9673,
                        "src": "2108:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12681,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12677,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15270,
                            "src": "2136:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12678,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13100,
                            "src": "2142:25:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12676,
                          "name": "newAppProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            12157,
                            12188
                          ],
                          "referencedDeclaration": 12157,
                          "src": "2124:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$12600_$_t_bytes32_$returns$_t_contract$_AppProxyUpgradeable_$10303_$",
                            "typeString": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)"
                          }
                        },
                        "id": 12679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2124:44:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$10303",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$10303",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      ],
                      "id": 12675,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9673,
                      "src": "2119:4:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$9673_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 12680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2119:50:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2108:61:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12685,
                        "name": "_permissionsCreator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12659,
                        "src": "2194:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12682,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12674,
                        "src": "2179:3:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      },
                      "id": 12684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9659,
                      "src": "2179:14:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 12686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2179:35:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12687,
                  "nodeType": "ExpressionStatement",
                  "src": "2179:35:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12689,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "2232:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12690,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13100,
                        "src": "2259:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12691,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12674,
                        "src": "2286:3:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 12688,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13028,
                      "src": "2224:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2224:66:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12693,
                  "nodeType": "ExpressionStatement",
                  "src": "2224:66:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12694,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13192,
                      "src": "2301:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12695,
                      "name": "KERNEL_DEFAULT_VAULT_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13103,
                      "src": "2322:27:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2301:48:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12697,
                  "nodeType": "ExpressionStatement",
                  "src": "2301:48:52"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initialize this kernel instance along with its ACL and set `_permissionsCreator` as the entity that can create other permissions\n@param _baseAcl Address of base ACL app\n@param _permissionsCreator Entity that will be given permission over createPermission",
            "id": 12699,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12662,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12661,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "1890:8:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1890:8:52"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12657,
                  "name": "_baseAcl",
                  "nodeType": "VariableDeclaration",
                  "scope": 12699,
                  "src": "1839:13:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$9673",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12656,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9673,
                    "src": "1839:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12659,
                  "name": "_permissionsCreator",
                  "nodeType": "VariableDeclaration",
                  "scope": 12699,
                  "src": "1854:27:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12658,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1854:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1838:44:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12663,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1899:0:52"
            },
            "scope": 13092,
            "src": "1819:537:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12725,
              "nodeType": "Block",
              "src": "2878:77:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12716,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12701,
                        "src": "2910:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12717,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12703,
                        "src": "2918:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2938:1:52",
                            "subdenomination": null,
                            "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": 12719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2928:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 12718,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2932:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 12721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2928:12:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 12722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2942:5:52",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12715,
                      "name": "newAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12726,
                        12770
                      ],
                      "referencedDeclaration": 12770,
                      "src": "2895:14:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$14225_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 12723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2895:53:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 12714,
                  "id": 12724,
                  "nodeType": "Return",
                  "src": "2888:60:52"
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 12726,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12706,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "2779:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12708,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "2801:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12709,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12701,
                        "src": "2829:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12707,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "2797:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2797:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12711,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12705,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "2774:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2774:63:52"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12701,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12726,
                  "src": "2717:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12700,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2717:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12703,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12726,
                  "src": "2733:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12702,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2733:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2716:34:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12713,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12726,
                  "src": "2855:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12712,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "2855:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2854:19:52"
            },
            "scope": 13092,
            "src": "2693:262:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12769,
              "nodeType": "Block",
              "src": "3968:446:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12747,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "3991:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12748,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12728,
                        "src": "4019:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12749,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12730,
                        "src": "4027:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12746,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13066,
                      "src": "3978:12:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3978:58:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12751,
                  "nodeType": "ExpressionStatement",
                  "src": "3978:58:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12758,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12752,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12744,
                      "src": "4046:8:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$14225",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12754,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15270,
                          "src": "4069:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12755,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12728,
                          "src": "4075:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12756,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12732,
                          "src": "4083:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12753,
                        "name": "newAppProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          12157,
                          12188
                        ],
                        "referencedDeclaration": 12188,
                        "src": "4057:11:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$12600_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyUpgradeable_$10303_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyUpgradeable)"
                        }
                      },
                      "id": 12757,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4057:45:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyUpgradeable_$10303",
                        "typeString": "contract AppProxyUpgradeable"
                      }
                    },
                    "src": "4046:56:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 12759,
                  "nodeType": "ExpressionStatement",
                  "src": "4046:56:52"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12760,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12734,
                    "src": "4319:11:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12768,
                  "nodeType": "IfStatement",
                  "src": "4315:93:52",
                  "trueBody": {
                    "id": 12767,
                    "nodeType": "Block",
                    "src": "4332:76:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12762,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13113,
                              "src": "4353:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12763,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12728,
                              "src": "4380:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12764,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12744,
                              "src": "4388:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 12761,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12864
                            ],
                            "referencedDeclaration": 12864,
                            "src": "4346:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 12765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4346:51:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12766,
                        "nodeType": "ExpressionStatement",
                        "src": "4346:51:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel and set its base\n     implementation if it was not already set\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 12770,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12737,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "3869:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12739,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "3891:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12740,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12728,
                        "src": "3919:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12738,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "3887:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3887:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12742,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12736,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "3864:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3864:63:52"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12728,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3763:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12727,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3763:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12730,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3779:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12729,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3779:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12732,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3797:24:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12731,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3797:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12734,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3823:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12733,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3823:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3762:78:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12744,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3945:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12743,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "3945:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3944:19:52"
            },
            "scope": 13092,
            "src": "3739:675:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12796,
              "nodeType": "Block",
              "src": "4954:83:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12787,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12772,
                        "src": "4992:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12788,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12774,
                        "src": "5000:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5020:1:52",
                            "subdenomination": null,
                            "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": 12790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "5010:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 12789,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "5014:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 12792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5010:12:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 12793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5024:5:52",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12786,
                      "name": "newPinnedAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12797,
                        12841
                      ],
                      "referencedDeclaration": 12841,
                      "src": "4971:20:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$14225_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 12794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4971:59:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 12785,
                  "id": 12795,
                  "nodeType": "Return",
                  "src": "4964:66:52"
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 12797,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12777,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "4855:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12779,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "4877:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12780,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12772,
                        "src": "4905:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12778,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "4873:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4873:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12782,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12776,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "4850:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4850:63:52"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12772,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12797,
                  "src": "4793:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12771,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4793:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12774,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12797,
                  "src": "4809:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12773,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4792:34:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12784,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12797,
                  "src": "4931:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12783,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "4931:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4930:19:52"
            },
            "scope": 13092,
            "src": "4763:274:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12840,
              "nodeType": "Block",
              "src": "6067:452:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12818,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "6090:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12819,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12799,
                        "src": "6118:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12820,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12801,
                        "src": "6126:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12817,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13066,
                      "src": "6077:12:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12821,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6077:58:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12822,
                  "nodeType": "ExpressionStatement",
                  "src": "6077:58:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12823,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12815,
                      "src": "6145:8:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$14225",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12825,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15270,
                          "src": "6174:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12826,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12799,
                          "src": "6180:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12827,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12803,
                          "src": "6188:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12824,
                        "name": "newAppProxyPinned",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          12207,
                          12238
                        ],
                        "referencedDeclaration": 12238,
                        "src": "6156:17:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$12600_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyPinned_$10263_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyPinned)"
                        }
                      },
                      "id": 12828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6156:51:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyPinned_$10263",
                        "typeString": "contract AppProxyPinned"
                      }
                    },
                    "src": "6145:62:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 12830,
                  "nodeType": "ExpressionStatement",
                  "src": "6145:62:52"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12831,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12805,
                    "src": "6424:11:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12839,
                  "nodeType": "IfStatement",
                  "src": "6420:93:52",
                  "trueBody": {
                    "id": 12838,
                    "nodeType": "Block",
                    "src": "6437:76:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12833,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13113,
                              "src": "6458:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12834,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12799,
                              "src": "6485:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12835,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12815,
                              "src": "6493:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 12832,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12864
                            ],
                            "referencedDeclaration": 12864,
                            "src": "6451:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 12836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6451:51:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12837,
                        "nodeType": "ExpressionStatement",
                        "src": "6451:51:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel and set\n     its base implementation if it was not already set\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 12841,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12808,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "5968:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12810,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "5990:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12811,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12799,
                        "src": "6018:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12809,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "5986:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12812,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5986:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12813,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12807,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "5963:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5963:63:52"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12799,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5862:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12798,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5862:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12801,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5878:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12803,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5896:24:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12802,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5896:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12805,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5922:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12804,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5922:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5861:78:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12815,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "6044:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12814,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "6044:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:19:52"
            },
            "scope": 13092,
            "src": "5832:687:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12863,
              "nodeType": "Block",
              "src": "7025:50:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12858,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12843,
                        "src": "7043:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12859,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12845,
                        "src": "7055:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12860,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12847,
                        "src": "7063:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12857,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13028,
                      "src": "7035:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12861,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7035:33:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12862,
                  "nodeType": "ExpressionStatement",
                  "src": "7035:33:52"
                }
              ]
            },
            "documentation": "@dev Set the resolving address of an app instance or base implementation\n@notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@param _app Address of the app instance or base implementation\n@return ID of app",
            "id": 12864,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12850,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "6978:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12852,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12843,
                        "src": "7000:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12853,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12845,
                        "src": "7012:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12851,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "6996:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6996:23:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12855,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12849,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "6973:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6973:47:52"
              }
            ],
            "name": "setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12843,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 12864,
                  "src": "6900:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12842,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6900:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12845,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12864,
                  "src": "6920:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12844,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6920:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12847,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 12864,
                  "src": "6936:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12846,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6936:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6899:50:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12856,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7025:0:52"
            },
            "scope": 13092,
            "src": "6884:191:52",
            "stateMutability": "nonpayable",
            "superFunction": 12590,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12880,
              "nodeType": "Block",
              "src": "7396:57:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12876,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13192,
                      "src": "7406:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12877,
                      "name": "_recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12866,
                      "src": "7427:19:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7406:40:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12879,
                  "nodeType": "ExpressionStatement",
                  "src": "7406:40:52"
                }
              ]
            },
            "documentation": "@dev Set the default vault id for the escape hatch mechanism\n@param _recoveryVaultAppId Identifier of the recovery vault app",
            "id": 12881,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12869,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "7321:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12871,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "7343:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12872,
                        "name": "_recoveryVaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12866,
                        "src": "7370:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12870,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "7339:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7339:51:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12874,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12868,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "7316:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7316:75:52"
              }
            ],
            "name": "setRecoveryVaultAppId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12867,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12866,
                  "name": "_recoveryVaultAppId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "7264:27:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12865,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7264:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7263:29:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7396:0:52"
            },
            "scope": 13092,
            "src": "7233:220:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12888,
              "nodeType": "Block",
              "src": "7672:33:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12886,
                    "name": "KERNEL_CORE_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13107,
                    "src": "7681:21:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12885,
                  "id": 12887,
                  "nodeType": "Return",
                  "src": "7674:28:52"
                }
              ]
            },
            "documentation": null,
            "id": 12889,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "CORE_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12882,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7637:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12884,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12889,
                  "src": "7663:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12883,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7663:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7662:9:52"
            },
            "scope": 13092,
            "src": "7614:91:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12896,
              "nodeType": "Block",
              "src": "7773:38:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12894,
                    "name": "KERNEL_APP_BASES_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13110,
                    "src": "7782:26:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12893,
                  "id": 12895,
                  "nodeType": "Return",
                  "src": "7775:33:52"
                }
              ]
            },
            "documentation": null,
            "id": 12897,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_BASES_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12890,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7738:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12892,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12897,
                  "src": "7764:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12891,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7764:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7763:9:52"
            },
            "scope": 13092,
            "src": "7710:101:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12904,
              "nodeType": "Block",
              "src": "7878:37:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12902,
                    "name": "KERNEL_APP_ADDR_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13113,
                    "src": "7887:25:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12901,
                  "id": 12903,
                  "nodeType": "Return",
                  "src": "7880:32:52"
                }
              ]
            },
            "documentation": null,
            "id": 12905,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_ADDR_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12898,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7843:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12900,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12905,
                  "src": "7869:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12899,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7869:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7868:9:52"
            },
            "scope": 13092,
            "src": "7816:99:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12912,
              "nodeType": "Block",
              "src": "7977:30:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12910,
                    "name": "KERNEL_CORE_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13097,
                    "src": "7986:18:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12909,
                  "id": 12911,
                  "nodeType": "Return",
                  "src": "7979:25:52"
                }
              ]
            },
            "documentation": null,
            "id": 12913,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "KERNEL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12906,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7942:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12908,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12913,
                  "src": "7968:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12907,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7968:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7967:9:52"
            },
            "scope": 13092,
            "src": "7920:87:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12920,
              "nodeType": "Block",
              "src": "8074:37:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12918,
                    "name": "KERNEL_DEFAULT_ACL_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13100,
                    "src": "8083:25:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12917,
                  "id": 12919,
                  "nodeType": "Return",
                  "src": "8076:32:52"
                }
              ]
            },
            "documentation": null,
            "id": 12921,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "DEFAULT_ACL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12914,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8039:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12916,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12921,
                  "src": "8065:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12915,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8065:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8064:9:52"
            },
            "scope": 13092,
            "src": "8012:99:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12936,
              "nodeType": "Block",
              "src": "8450:48:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12930,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13190,
                        "src": "8467:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 12932,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12931,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12923,
                        "src": "8472:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8467:16:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 12934,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12933,
                      "name": "_appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12925,
                      "src": "8484:6:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8467:24:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 12929,
                  "id": 12935,
                  "nodeType": "Return",
                  "src": "8460:31:52"
                }
              ]
            },
            "documentation": "@dev Get the address of an app instance or base implementation\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@return Address of the app",
            "id": 12937,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12923,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 12937,
                  "src": "8384:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12922,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8384:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12925,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12937,
                  "src": "8404:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12924,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8404:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8383:36:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12928,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12937,
                  "src": "8441:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12927,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8441:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8440:9:52"
            },
            "scope": 13092,
            "src": "8368:130:52",
            "stateMutability": "view",
            "superFunction": 12599,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12948,
              "nodeType": "Block",
              "src": "8689:75:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12942,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13190,
                        "src": "8706:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 12944,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12943,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "8711:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8706:31:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 12946,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12945,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13192,
                      "src": "8738:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8706:51:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 12941,
                  "id": 12947,
                  "nodeType": "Return",
                  "src": "8699:58:52"
                }
              ]
            },
            "documentation": "@dev Get the address of the recovery Vault instance (to recover funds)\n@return Address of the Vault",
            "id": 12949,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12938,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8656:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12940,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12949,
                  "src": "8680:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12939,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8680:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8679:9:52"
            },
            "scope": 13092,
            "src": "8631:133:52",
            "stateMutability": "view",
            "superFunction": 11421,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12961,
              "nodeType": "Block",
              "src": "8886:90:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12956,
                            "name": "KERNEL_APP_ADDR_NAMESPACE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13113,
                            "src": "8915:25:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12957,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13100,
                            "src": "8942:25:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12955,
                          "name": "getApp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            12937
                          ],
                          "referencedDeclaration": 12937,
                          "src": "8908:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,bytes32) view returns (address)"
                          }
                        },
                        "id": 12958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8908:60:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12954,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9673,
                      "src": "8903:4:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$9673_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 12959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8903:66:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "functionReturnParameters": 12953,
                  "id": 12960,
                  "nodeType": "Return",
                  "src": "8896:73:52"
                }
              ]
            },
            "documentation": "@dev Get the installed ACL app\n@return ACL app",
            "id": 12962,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "acl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12950,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8856:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12952,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12962,
                  "src": "8880:4:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$9673",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12951,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9673,
                    "src": "8880:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8879:6:52"
            },
            "scope": 13092,
            "src": "8844:132:52",
            "stateMutability": "view",
            "superFunction": 12568,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12996,
              "nodeType": "Block",
              "src": "9530:204:52",
              "statements": [
                {
                  "assignments": [
                    12976
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12976,
                      "name": "defaultAcl",
                      "nodeType": "VariableDeclaration",
                      "scope": 12997,
                      "src": "9540:15:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12975,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9673,
                        "src": "9540:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12979,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 12977,
                      "name": "acl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12962
                      ],
                      "referencedDeclaration": 12962,
                      "src": "9558:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IACL_$9673_$",
                        "typeString": "function () view returns (contract IACL)"
                      }
                    },
                    "id": 12978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9558:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9540:23:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 12986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12981,
                            "name": "defaultAcl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12976,
                            "src": "9588:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IACL_$9673",
                              "typeString": "contract IACL"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IACL_$9673",
                              "typeString": "contract IACL"
                            }
                          ],
                          "id": 12980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9580:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9580:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9611:1:52",
                            "subdenomination": null,
                            "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": 12983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9603:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9603:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "9580:33:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12989,
                          "name": "_who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12964,
                          "src": "9701:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12990,
                          "name": "_where",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12966,
                          "src": "9707:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12991,
                          "name": "_what",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12968,
                          "src": "9715:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12992,
                          "name": "_how",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12970,
                          "src": "9722:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12987,
                          "name": "defaultAcl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12976,
                          "src": "9676:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IACL_$9673",
                            "typeString": "contract IACL"
                          }
                        },
                        "id": 12988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasPermission",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9672,
                        "src": "9676:24:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 12993,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9676:51:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9580:147:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12974,
                  "id": 12995,
                  "nodeType": "Return",
                  "src": "9573:154:52"
                }
              ]
            },
            "documentation": "@dev Function called by apps to check ACL on kernel or to check permission status\n@param _who Sender of the original call\n@param _where Address of the app\n@param _what Identifier for a group of actions in app\n@param _how Extra data for ACL auth\n@return Boolean indicating whether the ACL allows the role or not.\n        Always returns false if the kernel hasn't been initialized yet.",
            "id": 12997,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hasPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12964,
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9446:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12963,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9446:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12966,
                  "name": "_where",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9460:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12965,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9460:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12968,
                  "name": "_what",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9476:13:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12967,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9476:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12970,
                  "name": "_how",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9491:10:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12969,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9491:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9445:57:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12973,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9524:4:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12972,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9524:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9523:6:52"
            },
            "scope": 13092,
            "src": "9423:311:52",
            "stateMutability": "view",
            "superFunction": 12581,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13027,
              "nodeType": "Block",
              "src": "9816:154:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13008,
                            "name": "_app",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13003,
                            "src": "9845:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 13007,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10837,
                          "src": "9834:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 13009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9834:16:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13010,
                        "name": "ERROR_APP_NOT_CONTRACT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12637,
                        "src": "9852:22:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 13006,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "9826:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9826:49:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13012,
                  "nodeType": "ExpressionStatement",
                  "src": "9826:49:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13013,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13190,
                          "src": "9885:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 13016,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13014,
                          "name": "_namespace",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12999,
                          "src": "9890:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9885:16:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 13017,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13015,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13001,
                        "src": "9902:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9885:24:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13018,
                      "name": "_app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13003,
                      "src": "9912:4:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9885:31:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13020,
                  "nodeType": "ExpressionStatement",
                  "src": "9885:31:52"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13022,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12999,
                        "src": "9938:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13023,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13001,
                        "src": "9950:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13024,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13003,
                        "src": "9958:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13021,
                      "name": "SetApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12558,
                      "src": "9931:6:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 13025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9931:32:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13026,
                  "nodeType": "EmitStatement",
                  "src": "9926:37:52"
                }
              ]
            },
            "documentation": null,
            "id": 13028,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12999,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 13028,
                  "src": "9757:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12998,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9757:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13001,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13028,
                  "src": "9777:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13000,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9777:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13003,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 13028,
                  "src": "9793:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9793:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9756:50:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 13005,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9816:0:52"
            },
            "scope": 13092,
            "src": "9740:230:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13065,
              "nodeType": "Block",
              "src": "10057:333:52",
              "statements": [
                {
                  "assignments": [
                    13038
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13038,
                      "name": "app",
                      "nodeType": "VariableDeclaration",
                      "scope": 13066,
                      "src": "10067:11:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13037,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10067:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13043,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13040,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13030,
                        "src": "10088:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13041,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13032,
                        "src": "10100:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 13039,
                      "name": "getApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12937
                      ],
                      "referencedDeclaration": 12937,
                      "src": "10081:6:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view returns (address)"
                      }
                    },
                    "id": 13042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10081:26:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10067:40:52"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13044,
                      "name": "app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13038,
                      "src": "10121:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10136:1:52",
                          "subdenomination": null,
                          "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": 13045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10128:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 13047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10128:10:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10121:17:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13063,
                    "nodeType": "Block",
                    "src": "10326:58:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13058,
                              "name": "_namespace",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13030,
                              "src": "10348:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13059,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13032,
                              "src": "10360:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13060,
                              "name": "_app",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13034,
                              "src": "10368:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13057,
                            "name": "_setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13028,
                            "src": "10340:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 13061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10340:33:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13062,
                        "nodeType": "ExpressionStatement",
                        "src": "10340:33:52"
                      }
                    ]
                  },
                  "id": 13064,
                  "nodeType": "IfStatement",
                  "src": "10117:267:52",
                  "trueBody": {
                    "id": 13056,
                    "nodeType": "Block",
                    "src": "10140:180:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13050,
                                "name": "app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13038,
                                "src": "10271:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 13051,
                                "name": "_app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13034,
                                "src": "10278:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10271:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13053,
                              "name": "ERROR_INVALID_APP_CHANGE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12640,
                              "src": "10284:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13049,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "10263:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10263:46:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13055,
                        "nodeType": "ExpressionStatement",
                        "src": "10263:46:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 13066,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setAppIfNew",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13035,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13030,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 13066,
                  "src": "9998:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13029,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9998:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13032,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13066,
                  "src": "10018:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13031,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10018:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13034,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 13066,
                  "src": "10034:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13033,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10034:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9997:50:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 13036,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10057:0:52"
            },
            "scope": 13092,
            "src": "9976:414:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13090,
              "nodeType": "Block",
              "src": "10451:197:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13075,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15153,
                              "src": "10496:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10496:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13078,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15270,
                                "src": "10516:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Kernel_$13092",
                                  "typeString": "contract Kernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$13092",
                                  "typeString": "contract Kernel"
                                }
                              ],
                              "id": 13077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10508:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 13079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10508:13:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13080,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13068,
                            "src": "10523:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13083,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13071,
                                "src": "10580:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13081,
                                "name": "ConversionHelpers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10552,
                                "src": "10530:17:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ConversionHelpers_$10552_$",
                                  "typeString": "type(library ConversionHelpers)"
                                }
                              },
                              "id": 13082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dangerouslyCastUintArrayToBytes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10524,
                              "src": "10530:49:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256[] memory) pure returns (bytes memory)"
                              }
                            },
                            "id": 13084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10530:58:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 13074,
                          "name": "hasPermission",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            12997
                          ],
                          "referencedDeclaration": 12997,
                          "src": "10482:13:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes32,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 13085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10482:107:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13086,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12643,
                        "src": "10603:17:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 13073,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "10461:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10461:169:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13088,
                  "nodeType": "ExpressionStatement",
                  "src": "10461:169:52"
                },
                {
                  "id": 13089,
                  "nodeType": "PlaceholderStatement",
                  "src": "10640:1:52"
                }
              ]
            },
            "documentation": null,
            "id": 13091,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 13072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13068,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 13091,
                  "src": "10410:13:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13067,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10410:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13071,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 13091,
                  "src": "10425:24:52",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13069,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10425:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13070,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10425:9:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10409:41:52"
            },
            "src": "10396:252:52",
            "visibility": "internal"
          }
        ],
        "scope": 13093,
        "src": "441:10209:52"
      }
    ],
    "src": "0:10651:52"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
    "exportedSymbols": {
      "Kernel": [
        13092
      ]
    },
    "id": 13093,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12602,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:52"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 12603,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 12601,
        "src": "25:23:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 12604,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 13115,
        "src": "49:31:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 12605,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 13194,
        "src": "81:29:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 12606,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 9674,
        "src": "111:25:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 12607,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 9653,
        "src": "137:35:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ConversionHelpers.sol",
        "file": "../common/ConversionHelpers.sol",
        "id": 12608,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 10553,
        "src": "173:41:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 12609,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 10839,
        "src": "215:34:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Petrifiable.sol",
        "file": "../common/Petrifiable.sol",
        "id": 12610,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 10872,
        "src": "250:35:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 12611,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 11423,
        "src": "286:40:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
        "file": "../factory/AppProxyFactory.sol",
        "id": 12612,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 12240,
        "src": "327:40:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/misc/ERCProxy.sol",
        "file": "../lib/misc/ERCProxy.sol",
        "id": 12613,
        "nodeType": "ImportDirective",
        "scope": 13093,
        "sourceUnit": 14226,
        "src": "368:34:52",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12614,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12600,
              "src": "460:7:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$12600",
                "typeString": "contract IKernel"
              }
            },
            "id": 12615,
            "nodeType": "InheritanceSpecifier",
            "src": "460:7:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12616,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13193,
              "src": "469:13:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$13193",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 12617,
            "nodeType": "InheritanceSpecifier",
            "src": "469:13:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12618,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13104,
              "src": "484:12:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$13104",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 12619,
            "nodeType": "InheritanceSpecifier",
            "src": "484:12:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12620,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13114,
              "src": "498:24:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$13114",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 12621,
            "nodeType": "InheritanceSpecifier",
            "src": "498:24:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12622,
              "name": "Petrifiable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10871,
              "src": "524:11:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Petrifiable_$10871",
                "typeString": "contract Petrifiable"
              }
            },
            "id": 12623,
            "nodeType": "InheritanceSpecifier",
            "src": "524:11:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12624,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10838,
              "src": "537:10:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$10838",
                "typeString": "contract IsContract"
              }
            },
            "id": 12625,
            "nodeType": "InheritanceSpecifier",
            "src": "537:10:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12626,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11422,
              "src": "549:16:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$11422",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 12627,
            "nodeType": "InheritanceSpecifier",
            "src": "549:16:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12628,
              "name": "AppProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12239,
              "src": "567:15:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppProxyFactory_$12239",
                "typeString": "contract AppProxyFactory"
              }
            },
            "id": 12629,
            "nodeType": "InheritanceSpecifier",
            "src": "567:15:52"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12630,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9577,
              "src": "584:14:52",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$9577",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 12631,
            "nodeType": "InheritanceSpecifier",
            "src": "584:14:52"
          }
        ],
        "contractDependencies": [
          9577,
          10662,
          10712,
          10810,
          10838,
          10871,
          11200,
          11422,
          12239,
          12559,
          12600,
          13104,
          13114,
          13193
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 13092,
        "linearizedBaseContracts": [
          13092,
          9577,
          12239,
          11422,
          10838,
          10662,
          10871,
          10810,
          11200,
          13114,
          13104,
          13193,
          12600,
          10712,
          12559
        ],
        "name": "Kernel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 12634,
            "name": "APP_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "729:109:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 12632,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:52",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307862366439323730386633643438313761666331303631343764393639653232396365643563343665363565306135303032613064333931323837373632626430",
              "id": 12633,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "772:66:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_82704613664676796936649533353167530996754393993849268174999512363230727384016_by_1",
                "typeString": "int_const 8270...(69 digits omitted)...4016"
              },
              "value": "0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12637,
            "name": "ERROR_APP_NOT_CONTRACT",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "845:74:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 12635,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "845:6:52",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f4150505f4e4f545f434f4e5452414354",
              "id": 12636,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "894:25:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9836ab188560c8863264933b2423feee77bc53fbabf48ddf22703b0c91862812",
                "typeString": "literal_string \"KERNEL_APP_NOT_CONTRACT\""
              },
              "value": "KERNEL_APP_NOT_CONTRACT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12640,
            "name": "ERROR_INVALID_APP_CHANGE",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "925:78:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 12638,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "925:6:52",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f494e56414c49445f4150505f4348414e4745",
              "id": 12639,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "976:27:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e4acfdbe2a685f787d10384f7152f5de5d8b0224aa0b8e04fb5d376ed2b3e513",
                "typeString": "literal_string \"KERNEL_INVALID_APP_CHANGE\""
              },
              "value": "KERNEL_INVALID_APP_CHANGE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12643,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 13092,
            "src": "1009:64:52",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 12641,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1009:6:52",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f415554485f4641494c4544",
              "id": 12642,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1053:20:52",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2f44e6c32cf650dbae4931fdeafb7f4804fc17f8169bd4fb754968e09d978601",
                "typeString": "literal_string \"KERNEL_AUTH_FAILED\""
              },
              "value": "KERNEL_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 12654,
              "nodeType": "Block",
              "src": "1345:70:52",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12648,
                    "name": "_shouldPetrify",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12645,
                    "src": "1359:14:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12653,
                  "nodeType": "IfStatement",
                  "src": "1355:54:52",
                  "trueBody": {
                    "id": 12652,
                    "nodeType": "Block",
                    "src": "1375:34:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12649,
                            "name": "petrify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10870,
                            "src": "1389:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 12650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1389:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12651,
                        "nodeType": "ExpressionStatement",
                        "src": "1389:9:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n@param _shouldPetrify Immediately petrify this instance so that it can never be initialized",
            "id": 12655,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12645,
                  "name": "_shouldPetrify",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "1317:19:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12644,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1316:21:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12647,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1345:0:52"
            },
            "scope": 13092,
            "src": "1305:110:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12698,
              "nodeType": "Block",
              "src": "1899:457:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 12664,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "1909:11:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 12665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1909:13:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12666,
                  "nodeType": "ExpressionStatement",
                  "src": "1909:13:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12668,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "1965:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12669,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13100,
                        "src": "1993:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12670,
                        "name": "_baseAcl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12657,
                        "src": "2020:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 12667,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13028,
                      "src": "1957:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1957:72:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12672,
                  "nodeType": "ExpressionStatement",
                  "src": "1957:72:52"
                },
                {
                  "assignments": [
                    12674
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12674,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 12699,
                      "src": "2108:8:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12673,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9673,
                        "src": "2108:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12681,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12677,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15270,
                            "src": "2136:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12678,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13100,
                            "src": "2142:25:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12676,
                          "name": "newAppProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            12157,
                            12188
                          ],
                          "referencedDeclaration": 12157,
                          "src": "2124:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$12600_$_t_bytes32_$returns$_t_contract$_AppProxyUpgradeable_$10303_$",
                            "typeString": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)"
                          }
                        },
                        "id": 12679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2124:44:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$10303",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$10303",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      ],
                      "id": 12675,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9673,
                      "src": "2119:4:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$9673_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 12680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2119:50:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2108:61:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12685,
                        "name": "_permissionsCreator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12659,
                        "src": "2194:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12682,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12674,
                        "src": "2179:3:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      },
                      "id": 12684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9659,
                      "src": "2179:14:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 12686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2179:35:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12687,
                  "nodeType": "ExpressionStatement",
                  "src": "2179:35:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12689,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "2232:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12690,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13100,
                        "src": "2259:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12691,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12674,
                        "src": "2286:3:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 12688,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13028,
                      "src": "2224:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2224:66:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12693,
                  "nodeType": "ExpressionStatement",
                  "src": "2224:66:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12694,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13192,
                      "src": "2301:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12695,
                      "name": "KERNEL_DEFAULT_VAULT_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13103,
                      "src": "2322:27:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2301:48:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12697,
                  "nodeType": "ExpressionStatement",
                  "src": "2301:48:52"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initialize this kernel instance along with its ACL and set `_permissionsCreator` as the entity that can create other permissions\n@param _baseAcl Address of base ACL app\n@param _permissionsCreator Entity that will be given permission over createPermission",
            "id": 12699,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12662,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12661,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "1890:8:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1890:8:52"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12657,
                  "name": "_baseAcl",
                  "nodeType": "VariableDeclaration",
                  "scope": 12699,
                  "src": "1839:13:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$9673",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12656,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9673,
                    "src": "1839:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12659,
                  "name": "_permissionsCreator",
                  "nodeType": "VariableDeclaration",
                  "scope": 12699,
                  "src": "1854:27:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12658,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1854:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1838:44:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12663,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1899:0:52"
            },
            "scope": 13092,
            "src": "1819:537:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12725,
              "nodeType": "Block",
              "src": "2878:77:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12716,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12701,
                        "src": "2910:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12717,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12703,
                        "src": "2918:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2938:1:52",
                            "subdenomination": null,
                            "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": 12719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2928:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 12718,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2932:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 12721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2928:12:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 12722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2942:5:52",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12715,
                      "name": "newAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12726,
                        12770
                      ],
                      "referencedDeclaration": 12770,
                      "src": "2895:14:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$14225_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 12723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2895:53:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 12714,
                  "id": 12724,
                  "nodeType": "Return",
                  "src": "2888:60:52"
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 12726,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12706,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "2779:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12708,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "2801:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12709,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12701,
                        "src": "2829:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12707,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "2797:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2797:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12711,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12705,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "2774:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2774:63:52"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12701,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12726,
                  "src": "2717:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12700,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2717:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12703,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12726,
                  "src": "2733:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12702,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2733:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2716:34:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12713,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12726,
                  "src": "2855:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12712,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "2855:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2854:19:52"
            },
            "scope": 13092,
            "src": "2693:262:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12769,
              "nodeType": "Block",
              "src": "3968:446:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12747,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "3991:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12748,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12728,
                        "src": "4019:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12749,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12730,
                        "src": "4027:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12746,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13066,
                      "src": "3978:12:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3978:58:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12751,
                  "nodeType": "ExpressionStatement",
                  "src": "3978:58:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12758,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12752,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12744,
                      "src": "4046:8:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$14225",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12754,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15270,
                          "src": "4069:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12755,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12728,
                          "src": "4075:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12756,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12732,
                          "src": "4083:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12753,
                        "name": "newAppProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          12157,
                          12188
                        ],
                        "referencedDeclaration": 12188,
                        "src": "4057:11:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$12600_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyUpgradeable_$10303_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyUpgradeable)"
                        }
                      },
                      "id": 12757,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4057:45:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyUpgradeable_$10303",
                        "typeString": "contract AppProxyUpgradeable"
                      }
                    },
                    "src": "4046:56:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 12759,
                  "nodeType": "ExpressionStatement",
                  "src": "4046:56:52"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12760,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12734,
                    "src": "4319:11:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12768,
                  "nodeType": "IfStatement",
                  "src": "4315:93:52",
                  "trueBody": {
                    "id": 12767,
                    "nodeType": "Block",
                    "src": "4332:76:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12762,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13113,
                              "src": "4353:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12763,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12728,
                              "src": "4380:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12764,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12744,
                              "src": "4388:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 12761,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12864
                            ],
                            "referencedDeclaration": 12864,
                            "src": "4346:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 12765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4346:51:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12766,
                        "nodeType": "ExpressionStatement",
                        "src": "4346:51:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel and set its base\n     implementation if it was not already set\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 12770,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12737,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "3869:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12739,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "3891:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12740,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12728,
                        "src": "3919:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12738,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "3887:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3887:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12742,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12736,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "3864:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3864:63:52"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12728,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3763:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12727,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3763:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12730,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3779:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12729,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3779:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12732,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3797:24:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12731,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3797:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12734,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3823:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12733,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3823:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3762:78:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12744,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12770,
                  "src": "3945:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12743,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "3945:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3944:19:52"
            },
            "scope": 13092,
            "src": "3739:675:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12796,
              "nodeType": "Block",
              "src": "4954:83:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12787,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12772,
                        "src": "4992:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12788,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12774,
                        "src": "5000:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5020:1:52",
                            "subdenomination": null,
                            "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": 12790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "5010:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 12789,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "5014:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 12792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5010:12:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 12793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5024:5:52",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12786,
                      "name": "newPinnedAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12797,
                        12841
                      ],
                      "referencedDeclaration": 12841,
                      "src": "4971:20:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$14225_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 12794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4971:59:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 12785,
                  "id": 12795,
                  "nodeType": "Return",
                  "src": "4964:66:52"
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 12797,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12777,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "4855:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12779,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "4877:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12780,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12772,
                        "src": "4905:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12778,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "4873:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4873:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12782,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12776,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "4850:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4850:63:52"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12772,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12797,
                  "src": "4793:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12771,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4793:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12774,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12797,
                  "src": "4809:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12773,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4792:34:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12784,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12797,
                  "src": "4931:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12783,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "4931:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4930:19:52"
            },
            "scope": 13092,
            "src": "4763:274:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12840,
              "nodeType": "Block",
              "src": "6067:452:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12818,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "6090:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12819,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12799,
                        "src": "6118:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12820,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12801,
                        "src": "6126:8:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12817,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13066,
                      "src": "6077:12:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12821,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6077:58:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12822,
                  "nodeType": "ExpressionStatement",
                  "src": "6077:58:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12823,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12815,
                      "src": "6145:8:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$14225",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12825,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15270,
                          "src": "6174:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12826,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12799,
                          "src": "6180:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12827,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12803,
                          "src": "6188:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$13092",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12824,
                        "name": "newAppProxyPinned",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          12207,
                          12238
                        ],
                        "referencedDeclaration": 12238,
                        "src": "6156:17:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$12600_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyPinned_$10263_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyPinned)"
                        }
                      },
                      "id": 12828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6156:51:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyPinned_$10263",
                        "typeString": "contract AppProxyPinned"
                      }
                    },
                    "src": "6145:62:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 12830,
                  "nodeType": "ExpressionStatement",
                  "src": "6145:62:52"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12831,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12805,
                    "src": "6424:11:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12839,
                  "nodeType": "IfStatement",
                  "src": "6420:93:52",
                  "trueBody": {
                    "id": 12838,
                    "nodeType": "Block",
                    "src": "6437:76:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12833,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13113,
                              "src": "6458:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12834,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12799,
                              "src": "6485:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12835,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12815,
                              "src": "6493:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$14225",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 12832,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12864
                            ],
                            "referencedDeclaration": 12864,
                            "src": "6451:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 12836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6451:51:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12837,
                        "nodeType": "ExpressionStatement",
                        "src": "6451:51:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel and set\n     its base implementation if it was not already set\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 12841,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12808,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "5968:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12810,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13110,
                        "src": "5990:26:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12811,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12799,
                        "src": "6018:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12809,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "5986:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12812,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5986:39:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12813,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12807,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "5963:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5963:63:52"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12799,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5862:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12798,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5862:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12801,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5878:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12803,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5896:24:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12802,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5896:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12805,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "5922:16:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12804,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5922:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5861:78:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12815,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 12841,
                  "src": "6044:17:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$14225",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12814,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14225,
                    "src": "6044:8:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$14225",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:19:52"
            },
            "scope": 13092,
            "src": "5832:687:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12863,
              "nodeType": "Block",
              "src": "7025:50:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12858,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12843,
                        "src": "7043:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12859,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12845,
                        "src": "7055:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12860,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12847,
                        "src": "7063:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12857,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13028,
                      "src": "7035:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 12861,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7035:33:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12862,
                  "nodeType": "ExpressionStatement",
                  "src": "7035:33:52"
                }
              ]
            },
            "documentation": "@dev Set the resolving address of an app instance or base implementation\n@notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@param _app Address of the app instance or base implementation\n@return ID of app",
            "id": 12864,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12850,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "6978:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12852,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12843,
                        "src": "7000:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12853,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12845,
                        "src": "7012:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12851,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "6996:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6996:23:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12855,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12849,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "6973:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6973:47:52"
              }
            ],
            "name": "setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12843,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 12864,
                  "src": "6900:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12842,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6900:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12845,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12864,
                  "src": "6920:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12844,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6920:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12847,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 12864,
                  "src": "6936:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12846,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6936:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6899:50:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12856,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7025:0:52"
            },
            "scope": 13092,
            "src": "6884:191:52",
            "stateMutability": "nonpayable",
            "superFunction": 12590,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12880,
              "nodeType": "Block",
              "src": "7396:57:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12876,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13192,
                      "src": "7406:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12877,
                      "name": "_recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12866,
                      "src": "7427:19:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7406:40:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12879,
                  "nodeType": "ExpressionStatement",
                  "src": "7406:40:52"
                }
              ]
            },
            "documentation": "@dev Set the default vault id for the escape hatch mechanism\n@param _recoveryVaultAppId Identifier of the recovery vault app",
            "id": 12881,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12869,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12634,
                    "src": "7321:16:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12871,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "7343:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12872,
                        "name": "_recoveryVaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12866,
                        "src": "7370:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12870,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9202,
                      "src": "7339:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 12873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7339:51:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 12874,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12868,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13091,
                  "src": "7316:4:52",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7316:75:52"
              }
            ],
            "name": "setRecoveryVaultAppId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12867,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12866,
                  "name": "_recoveryVaultAppId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "7264:27:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12865,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7264:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7263:29:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7396:0:52"
            },
            "scope": 13092,
            "src": "7233:220:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12888,
              "nodeType": "Block",
              "src": "7672:33:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12886,
                    "name": "KERNEL_CORE_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13107,
                    "src": "7681:21:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12885,
                  "id": 12887,
                  "nodeType": "Return",
                  "src": "7674:28:52"
                }
              ]
            },
            "documentation": null,
            "id": 12889,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "CORE_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12882,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7637:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12884,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12889,
                  "src": "7663:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12883,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7663:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7662:9:52"
            },
            "scope": 13092,
            "src": "7614:91:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12896,
              "nodeType": "Block",
              "src": "7773:38:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12894,
                    "name": "KERNEL_APP_BASES_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13110,
                    "src": "7782:26:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12893,
                  "id": 12895,
                  "nodeType": "Return",
                  "src": "7775:33:52"
                }
              ]
            },
            "documentation": null,
            "id": 12897,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_BASES_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12890,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7738:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12892,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12897,
                  "src": "7764:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12891,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7764:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7763:9:52"
            },
            "scope": 13092,
            "src": "7710:101:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12904,
              "nodeType": "Block",
              "src": "7878:37:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12902,
                    "name": "KERNEL_APP_ADDR_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13113,
                    "src": "7887:25:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12901,
                  "id": 12903,
                  "nodeType": "Return",
                  "src": "7880:32:52"
                }
              ]
            },
            "documentation": null,
            "id": 12905,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_ADDR_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12898,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7843:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12900,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12905,
                  "src": "7869:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12899,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7869:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7868:9:52"
            },
            "scope": 13092,
            "src": "7816:99:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12912,
              "nodeType": "Block",
              "src": "7977:30:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12910,
                    "name": "KERNEL_CORE_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13097,
                    "src": "7986:18:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12909,
                  "id": 12911,
                  "nodeType": "Return",
                  "src": "7979:25:52"
                }
              ]
            },
            "documentation": null,
            "id": 12913,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "KERNEL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12906,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7942:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12908,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12913,
                  "src": "7968:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12907,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7968:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7967:9:52"
            },
            "scope": 13092,
            "src": "7920:87:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12920,
              "nodeType": "Block",
              "src": "8074:37:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12918,
                    "name": "KERNEL_DEFAULT_ACL_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13100,
                    "src": "8083:25:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12917,
                  "id": 12919,
                  "nodeType": "Return",
                  "src": "8076:32:52"
                }
              ]
            },
            "documentation": null,
            "id": 12921,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "DEFAULT_ACL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12914,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8039:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12916,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12921,
                  "src": "8065:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12915,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8065:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8064:9:52"
            },
            "scope": 13092,
            "src": "8012:99:52",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12936,
              "nodeType": "Block",
              "src": "8450:48:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12930,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13190,
                        "src": "8467:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 12932,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12931,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12923,
                        "src": "8472:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8467:16:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 12934,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12933,
                      "name": "_appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12925,
                      "src": "8484:6:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8467:24:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 12929,
                  "id": 12935,
                  "nodeType": "Return",
                  "src": "8460:31:52"
                }
              ]
            },
            "documentation": "@dev Get the address of an app instance or base implementation\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@return Address of the app",
            "id": 12937,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12923,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 12937,
                  "src": "8384:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12922,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8384:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12925,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12937,
                  "src": "8404:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12924,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8404:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8383:36:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12928,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12937,
                  "src": "8441:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12927,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8441:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8440:9:52"
            },
            "scope": 13092,
            "src": "8368:130:52",
            "stateMutability": "view",
            "superFunction": 12599,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12948,
              "nodeType": "Block",
              "src": "8689:75:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12942,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13190,
                        "src": "8706:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 12944,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12943,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "8711:25:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8706:31:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 12946,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12945,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13192,
                      "src": "8738:18:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8706:51:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 12941,
                  "id": 12947,
                  "nodeType": "Return",
                  "src": "8699:58:52"
                }
              ]
            },
            "documentation": "@dev Get the address of the recovery Vault instance (to recover funds)\n@return Address of the Vault",
            "id": 12949,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12938,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8656:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12940,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12949,
                  "src": "8680:7:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12939,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8680:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8679:9:52"
            },
            "scope": 13092,
            "src": "8631:133:52",
            "stateMutability": "view",
            "superFunction": 11421,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12961,
              "nodeType": "Block",
              "src": "8886:90:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12956,
                            "name": "KERNEL_APP_ADDR_NAMESPACE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13113,
                            "src": "8915:25:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12957,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13100,
                            "src": "8942:25:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12955,
                          "name": "getApp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            12937
                          ],
                          "referencedDeclaration": 12937,
                          "src": "8908:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,bytes32) view returns (address)"
                          }
                        },
                        "id": 12958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8908:60:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12954,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9673,
                      "src": "8903:4:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$9673_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 12959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8903:66:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "functionReturnParameters": 12953,
                  "id": 12960,
                  "nodeType": "Return",
                  "src": "8896:73:52"
                }
              ]
            },
            "documentation": "@dev Get the installed ACL app\n@return ACL app",
            "id": 12962,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "acl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12950,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8856:2:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12952,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12962,
                  "src": "8880:4:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$9673",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12951,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9673,
                    "src": "8880:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8879:6:52"
            },
            "scope": 13092,
            "src": "8844:132:52",
            "stateMutability": "view",
            "superFunction": 12568,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12996,
              "nodeType": "Block",
              "src": "9530:204:52",
              "statements": [
                {
                  "assignments": [
                    12976
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12976,
                      "name": "defaultAcl",
                      "nodeType": "VariableDeclaration",
                      "scope": 12997,
                      "src": "9540:15:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12975,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9673,
                        "src": "9540:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$9673",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12979,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 12977,
                      "name": "acl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12962
                      ],
                      "referencedDeclaration": 12962,
                      "src": "9558:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IACL_$9673_$",
                        "typeString": "function () view returns (contract IACL)"
                      }
                    },
                    "id": 12978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9558:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9540:23:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 12986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12981,
                            "name": "defaultAcl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12976,
                            "src": "9588:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IACL_$9673",
                              "typeString": "contract IACL"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IACL_$9673",
                              "typeString": "contract IACL"
                            }
                          ],
                          "id": 12980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9580:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9580:19:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9611:1:52",
                            "subdenomination": null,
                            "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": 12983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9603:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9603:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "9580:33:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12989,
                          "name": "_who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12964,
                          "src": "9701:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12990,
                          "name": "_where",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12966,
                          "src": "9707:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12991,
                          "name": "_what",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12968,
                          "src": "9715:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 12992,
                          "name": "_how",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12970,
                          "src": "9722:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12987,
                          "name": "defaultAcl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12976,
                          "src": "9676:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IACL_$9673",
                            "typeString": "contract IACL"
                          }
                        },
                        "id": 12988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasPermission",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9672,
                        "src": "9676:24:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 12993,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9676:51:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9580:147:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12974,
                  "id": 12995,
                  "nodeType": "Return",
                  "src": "9573:154:52"
                }
              ]
            },
            "documentation": "@dev Function called by apps to check ACL on kernel or to check permission status\n@param _who Sender of the original call\n@param _where Address of the app\n@param _what Identifier for a group of actions in app\n@param _how Extra data for ACL auth\n@return Boolean indicating whether the ACL allows the role or not.\n        Always returns false if the kernel hasn't been initialized yet.",
            "id": 12997,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hasPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12964,
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9446:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12963,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9446:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12966,
                  "name": "_where",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9460:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12965,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9460:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12968,
                  "name": "_what",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9476:13:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12967,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9476:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12970,
                  "name": "_how",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9491:10:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12969,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9491:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9445:57:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 12974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12973,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12997,
                  "src": "9524:4:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12972,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9524:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9523:6:52"
            },
            "scope": 13092,
            "src": "9423:311:52",
            "stateMutability": "view",
            "superFunction": 12581,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13027,
              "nodeType": "Block",
              "src": "9816:154:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13008,
                            "name": "_app",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13003,
                            "src": "9845:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 13007,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10837,
                          "src": "9834:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 13009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9834:16:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13010,
                        "name": "ERROR_APP_NOT_CONTRACT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12637,
                        "src": "9852:22:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 13006,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "9826:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9826:49:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13012,
                  "nodeType": "ExpressionStatement",
                  "src": "9826:49:52"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13013,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13190,
                          "src": "9885:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 13016,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13014,
                          "name": "_namespace",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12999,
                          "src": "9890:10:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9885:16:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 13017,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13015,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13001,
                        "src": "9902:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9885:24:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13018,
                      "name": "_app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13003,
                      "src": "9912:4:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9885:31:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13020,
                  "nodeType": "ExpressionStatement",
                  "src": "9885:31:52"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13022,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12999,
                        "src": "9938:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13023,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13001,
                        "src": "9950:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13024,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13003,
                        "src": "9958:4:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13021,
                      "name": "SetApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12558,
                      "src": "9931:6:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 13025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9931:32:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13026,
                  "nodeType": "EmitStatement",
                  "src": "9926:37:52"
                }
              ]
            },
            "documentation": null,
            "id": 13028,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12999,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 13028,
                  "src": "9757:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12998,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9757:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13001,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13028,
                  "src": "9777:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13000,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9777:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13003,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 13028,
                  "src": "9793:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9793:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9756:50:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 13005,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9816:0:52"
            },
            "scope": 13092,
            "src": "9740:230:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13065,
              "nodeType": "Block",
              "src": "10057:333:52",
              "statements": [
                {
                  "assignments": [
                    13038
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13038,
                      "name": "app",
                      "nodeType": "VariableDeclaration",
                      "scope": 13066,
                      "src": "10067:11:52",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13037,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10067:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13043,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13040,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13030,
                        "src": "10088:10:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13041,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13032,
                        "src": "10100:6:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 13039,
                      "name": "getApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12937
                      ],
                      "referencedDeclaration": 12937,
                      "src": "10081:6:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view returns (address)"
                      }
                    },
                    "id": 13042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10081:26:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10067:40:52"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13044,
                      "name": "app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13038,
                      "src": "10121:3:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10136:1:52",
                          "subdenomination": null,
                          "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": 13045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10128:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 13047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10128:10:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10121:17:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13063,
                    "nodeType": "Block",
                    "src": "10326:58:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13058,
                              "name": "_namespace",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13030,
                              "src": "10348:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13059,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13032,
                              "src": "10360:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13060,
                              "name": "_app",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13034,
                              "src": "10368:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13057,
                            "name": "_setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13028,
                            "src": "10340:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 13061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10340:33:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13062,
                        "nodeType": "ExpressionStatement",
                        "src": "10340:33:52"
                      }
                    ]
                  },
                  "id": 13064,
                  "nodeType": "IfStatement",
                  "src": "10117:267:52",
                  "trueBody": {
                    "id": 13056,
                    "nodeType": "Block",
                    "src": "10140:180:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13050,
                                "name": "app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13038,
                                "src": "10271:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 13051,
                                "name": "_app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13034,
                                "src": "10278:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10271:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13053,
                              "name": "ERROR_INVALID_APP_CHANGE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12640,
                              "src": "10284:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13049,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "10263:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10263:46:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13055,
                        "nodeType": "ExpressionStatement",
                        "src": "10263:46:52"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 13066,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setAppIfNew",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13035,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13030,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 13066,
                  "src": "9998:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13029,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9998:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13032,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13066,
                  "src": "10018:14:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13031,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10018:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13034,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 13066,
                  "src": "10034:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13033,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10034:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9997:50:52"
            },
            "payable": false,
            "returnParameters": {
              "id": 13036,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10057:0:52"
            },
            "scope": 13092,
            "src": "9976:414:52",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13090,
              "nodeType": "Block",
              "src": "10451:197:52",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13075,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15153,
                              "src": "10496:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10496:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13078,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15270,
                                "src": "10516:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Kernel_$13092",
                                  "typeString": "contract Kernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$13092",
                                  "typeString": "contract Kernel"
                                }
                              ],
                              "id": 13077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10508:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 13079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10508:13:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13080,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13068,
                            "src": "10523:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13083,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13071,
                                "src": "10580:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13081,
                                "name": "ConversionHelpers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10552,
                                "src": "10530:17:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ConversionHelpers_$10552_$",
                                  "typeString": "type(library ConversionHelpers)"
                                }
                              },
                              "id": 13082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dangerouslyCastUintArrayToBytes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10524,
                              "src": "10530:49:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256[] memory) pure returns (bytes memory)"
                              }
                            },
                            "id": 13084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10530:58:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 13074,
                          "name": "hasPermission",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            12997
                          ],
                          "referencedDeclaration": 12997,
                          "src": "10482:13:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes32,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 13085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10482:107:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13086,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12643,
                        "src": "10603:17:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 13073,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "10461:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10461:169:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13088,
                  "nodeType": "ExpressionStatement",
                  "src": "10461:169:52"
                },
                {
                  "id": 13089,
                  "nodeType": "PlaceholderStatement",
                  "src": "10640:1:52"
                }
              ]
            },
            "documentation": null,
            "id": 13091,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 13072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13068,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 13091,
                  "src": "10410:13:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13067,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10410:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13071,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 13091,
                  "src": "10425:24:52",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13069,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10425:7:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13070,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10425:9:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10409:41:52"
            },
            "src": "10396:252:52",
            "visibility": "internal"
          }
        ],
        "scope": 13093,
        "src": "441:10209:52"
      }
    ],
    "src": "0:10651:52"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.779Z"
}