{
  "contractName": "EVMScriptRegistry",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REGISTRY_ADD_EXECUTOR_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "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": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "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": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REGISTRY_MANAGER_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "executors",
      "outputs": [
        {
          "name": "executor",
          "type": "address"
        },
        {
          "name": "enabled",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executorId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "executorAddress",
          "type": "address"
        }
      ],
      "name": "EnableExecutor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executorId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "executorAddress",
          "type": "address"
        }
      ],
      "name": "DisableExecutor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "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"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executor",
          "type": "address"
        }
      ],
      "name": "addScriptExecutor",
      "outputs": [
        {
          "name": "id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executorId",
          "type": "uint256"
        }
      ],
      "name": "disableScriptExecutor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executorId",
          "type": "uint256"
        }
      ],
      "name": "enableScriptExecutor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062001c4e833981519152640100000000620015f86200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062001c4e833981519152826401000000006200194c6200023782021704565b50565b5490565b9055565b611a03806200024b6000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304bf2a7f811461010b5780630803fac01461018d57806319f3d10f146101b65780632914b9bd146101dd57806332f0a3b5146102365780635ca4d4bb1461024b5780637e7db6e11461026557806380afdea8146102935780638129fc1c146102a857806387a16f12146102bd5780638b3dd749146102eb5780639d4941d814610300578063a1658fad1461032e578063a479e508146103a2578063bd8fde1c146103b7578063cff606a0146103cc578063d4aae0c4146103e4578063de4796ed146103f9578063f97a05df1461040e575b600080fd5b34801561011757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506104569650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019957600080fd5b506101a26105a8565b604080519115158252519081900360200190f35b3480156101c257600080fd5b506101cb6105d1565b60408051918252519081900360200190f35b3480156101e957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506105f59650505050505050565b34801561024257600080fd5b50610164610701565b34801561025757600080fd5b5061026360043561079f565b005b34801561027157600080fd5b506101a273ffffffffffffffffffffffffffffffffffffffff600435166109b3565b34801561029f57600080fd5b506101cb6109b9565b3480156102b457600080fd5b506102636109e9565b3480156102c957600080fd5b506101cb73ffffffffffffffffffffffffffffffffffffffff60043516610a9d565b3480156102f757600080fd5b506101cb610c61565b34801561030c57600080fd5b5061026373ffffffffffffffffffffffffffffffffffffffff60043516610c8c565b34801561033a57600080fd5b5060408051602060046044358181013583810280860185019096528085526101a295833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750610fae9650505050505050565b3480156103ae57600080fd5b5061016461113e565b3480156103c357600080fd5b506101cb611200565b3480156103d857600080fd5b50610263600435611224565b3480156103f057600080fd5b506101646114ff565b34801561040557600080fd5b506101a261152a565b34801561041a57600080fd5b5061042660043561155b565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301528051918290030190f35b60008060006004845110156040805190810160405280601e81526020017f45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254000081525090151561053c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610546846115a0565b63ffffffff1660008181526001602052604090208054919350915074010000000000000000000000000000000000000000900460ff166105875760006105a0565b805473ffffffffffffffffffffffffffffffffffffffff165b949350505050565b6000806105b3610c61565b905080158015906105cb5750806105c86115b3565b10155b91505090565b7fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed281565b60006105ff61113e565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561068357818101518382015260200161066b565b50505050905090810190601f1680156106b05780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156106cf57600080fd5b505af11580156106e3573d6000803e3d6000fd5b505050506040513d60208110156106f957600080fd5b505192915050565b600061070b6114ff565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5051905090565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36107cb836115b7565b6107d6338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610873576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008481526001602090815260409182902080548351808501909452601884527f45564d5245475f4558454355544f525f44495341424c4544000000000000000092840192909252945074010000000000000000000000000000000000000000900460ff161515610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5082547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116845560405173ffffffffffffffffffffffffffffffffffffffff9091169085907fc13cd9238f8ab1e5ab1f95cde77e89288fe5c328d04739adffd57b144b408fd190600090a350505050565b50600190565b60006109e47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6115f8565b905090565b6109f1610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610a966115fc565b6001600055565b6040805160008082526020820190925281907fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed290610ade9033908390610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50600080546001808201835560408051808201825273ffffffffffffffffffffffffffffffffffffffff808a168083526020808401868152878952959052838720925183549551151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff919093167fffffffffffffffffffffffff00000000000000000000000000000000000000009096169590951794909416179055519194509184917f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb566999190a35092915050565b60006109e47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6115f8565b6000806000610c9a846109b3565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610d40610701565b9250610d4b836116df565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5073ffffffffffffffffffffffffffffffffffffffff84161515610e53576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610e4d573d6000803e3d6000fd5b50610f43565b5082610e7b73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61171916565b9150610ea473ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61185216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080610fb96105a8565b1515610fc85760009150611136565b610fd06114ff565b905073ffffffffffffffffffffffffffffffffffffffff81161515610ff85760009150611136565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611020886118ea565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156110b85781810151838201526020016110a0565b50505050905090810190601f1680156110e55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d602081101561113157600080fd5b505191505b509392505050565b6000806111496114ff565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156106cf57600080fd5b7ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa381565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3611250836115b7565b61125b338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156112f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b508360008111801561130b575060005481105b60408051808201909152601a81527f45564d5245475f494e4558495354454e545f4558454355544f5200000000000060208201529015156113a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008581526001602090815260409182902080548351808501909452601784527f45564d5245475f4558454355544f525f454e41424c454400000000000000000092840192909252955074010000000000000000000000000000000000000000900460ff1615611475576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5083547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001780855560405173ffffffffffffffffffffffffffffffffffffffff9091169086907f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669990600090a35050505050565b60006109e47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6115f8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611555610c61565b14905090565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900460ff1682565b60006115ad8260006118f4565b92915050565b4390565b60408051600180825281830190925260609160208083019080388339019050509050818160008151811015156115e957fe5b60209081029091010152919050565b5490565b611604610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b506116d96116ac6115b3565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61194c16565b565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156117085760009150611713565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806117a68684611950565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611848576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906118e18582611981565b95945050505050565b8051602002815290565b60008061190184846119cf565b7c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000090911604949350505050565b9055565b6000806000806040516020818751602089018a5afa9250600083111561197557805191505b50909590945092505050565b6000806040516020818551602087016000895af160008111156119c5573d80156119b257602081146119bb576119c3565b600193506119c3565b600183511493505b505b5090949350505050565b0160200151905600a165627a7a7230582079959e429032044ca887606d4966d2e5941eda9ca04bb87dabd8d3b0b81b70800029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304bf2a7f811461010b5780630803fac01461018d57806319f3d10f146101b65780632914b9bd146101dd57806332f0a3b5146102365780635ca4d4bb1461024b5780637e7db6e11461026557806380afdea8146102935780638129fc1c146102a857806387a16f12146102bd5780638b3dd749146102eb5780639d4941d814610300578063a1658fad1461032e578063a479e508146103a2578063bd8fde1c146103b7578063cff606a0146103cc578063d4aae0c4146103e4578063de4796ed146103f9578063f97a05df1461040e575b600080fd5b34801561011757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506104569650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019957600080fd5b506101a26105a8565b604080519115158252519081900360200190f35b3480156101c257600080fd5b506101cb6105d1565b60408051918252519081900360200190f35b3480156101e957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506105f59650505050505050565b34801561024257600080fd5b50610164610701565b34801561025757600080fd5b5061026360043561079f565b005b34801561027157600080fd5b506101a273ffffffffffffffffffffffffffffffffffffffff600435166109b3565b34801561029f57600080fd5b506101cb6109b9565b3480156102b457600080fd5b506102636109e9565b3480156102c957600080fd5b506101cb73ffffffffffffffffffffffffffffffffffffffff60043516610a9d565b3480156102f757600080fd5b506101cb610c61565b34801561030c57600080fd5b5061026373ffffffffffffffffffffffffffffffffffffffff60043516610c8c565b34801561033a57600080fd5b5060408051602060046044358181013583810280860185019096528085526101a295833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750610fae9650505050505050565b3480156103ae57600080fd5b5061016461113e565b3480156103c357600080fd5b506101cb611200565b3480156103d857600080fd5b50610263600435611224565b3480156103f057600080fd5b506101646114ff565b34801561040557600080fd5b506101a261152a565b34801561041a57600080fd5b5061042660043561155b565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301528051918290030190f35b60008060006004845110156040805190810160405280601e81526020017f45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254000081525090151561053c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610546846115a0565b63ffffffff1660008181526001602052604090208054919350915074010000000000000000000000000000000000000000900460ff166105875760006105a0565b805473ffffffffffffffffffffffffffffffffffffffff165b949350505050565b6000806105b3610c61565b905080158015906105cb5750806105c86115b3565b10155b91505090565b7fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed281565b60006105ff61113e565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561068357818101518382015260200161066b565b50505050905090810190601f1680156106b05780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156106cf57600080fd5b505af11580156106e3573d6000803e3d6000fd5b505050506040513d60208110156106f957600080fd5b505192915050565b600061070b6114ff565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5051905090565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36107cb836115b7565b6107d6338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610873576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008481526001602090815260409182902080548351808501909452601884527f45564d5245475f4558454355544f525f44495341424c4544000000000000000092840192909252945074010000000000000000000000000000000000000000900460ff161515610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5082547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116845560405173ffffffffffffffffffffffffffffffffffffffff9091169085907fc13cd9238f8ab1e5ab1f95cde77e89288fe5c328d04739adffd57b144b408fd190600090a350505050565b50600190565b60006109e47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6115f8565b905090565b6109f1610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610a966115fc565b6001600055565b6040805160008082526020820190925281907fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed290610ade9033908390610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50600080546001808201835560408051808201825273ffffffffffffffffffffffffffffffffffffffff808a168083526020808401868152878952959052838720925183549551151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff919093167fffffffffffffffffffffffff00000000000000000000000000000000000000009096169590951794909416179055519194509184917f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb566999190a35092915050565b60006109e47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6115f8565b6000806000610c9a846109b3565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610d40610701565b9250610d4b836116df565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5073ffffffffffffffffffffffffffffffffffffffff84161515610e53576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610e4d573d6000803e3d6000fd5b50610f43565b5082610e7b73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61171916565b9150610ea473ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61185216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080610fb96105a8565b1515610fc85760009150611136565b610fd06114ff565b905073ffffffffffffffffffffffffffffffffffffffff81161515610ff85760009150611136565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611020886118ea565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156110b85781810151838201526020016110a0565b50505050905090810190601f1680156110e55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d602081101561113157600080fd5b505191505b509392505050565b6000806111496114ff565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156106cf57600080fd5b7ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa381565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3611250836115b7565b61125b338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156112f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b508360008111801561130b575060005481105b60408051808201909152601a81527f45564d5245475f494e4558495354454e545f4558454355544f5200000000000060208201529015156113a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008581526001602090815260409182902080548351808501909452601784527f45564d5245475f4558454355544f525f454e41424c454400000000000000000092840192909252955074010000000000000000000000000000000000000000900460ff1615611475576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5083547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001780855560405173ffffffffffffffffffffffffffffffffffffffff9091169086907f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669990600090a35050505050565b60006109e47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6115f8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611555610c61565b14905090565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900460ff1682565b60006115ad8260006118f4565b92915050565b4390565b60408051600180825281830190925260609160208083019080388339019050509050818160008151811015156115e957fe5b60209081029091010152919050565b5490565b611604610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b506116d96116ac6115b3565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61194c16565b565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156117085760009150611713565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806117a68684611950565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611848576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906118e18582611981565b95945050505050565b8051602002815290565b60008061190184846119cf565b7c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000090911604949350505050565b9055565b6000806000806040516020818751602089018a5afa9250600083111561197557805191505b50909590945092505050565b6000806040516020818551602087016000895af160008111156119c5573d80156119b257602081146119bb576119c3565b600193506119c3565b600183511493505b505b5090949350505050565b0160200151905600a165627a7a7230582079959e429032044ca887606d4966d2e5941eda9ca04bb87dabd8d3b0b81b70800029",
  "sourceMap": "236:4278:41:-;;;344:9:24;:7;;;;:9;:::i;:::-;236:4278:41;;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;236:4278:41:-;;;;;;;",
  "deployedSourceMap": "236:4278:41:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4027:485;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4027:485:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4027:485:41;;-1:-1:-1;4027:485:41;;-1:-1:-1;;;;;;;4027:485:41;;;;;;;;;;;;;;;;;;;;1128:208:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:32;;;;;;;;;;;;;;;;;;;;;;598:119:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:119:41;;;;;;;;;;;;;;;;;;;;795:179:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:42;;-1:-1:-1;795:179:42;;-1:-1:-1;;;;;;;795:179:42;2253:229:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:23;;;;2788:515:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2788:515:41;;;;;;;1659:99:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:40;;;;;;;796:106:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:22;;;;1906:158:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:158:41;;;;2318:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2318:321:41;;;;;;;881:137:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:32;;;;836:623:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:40;;;;;;;1641:496:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:23;;-1:-1:-1;1641:496:23;;-1:-1:-1;;;;;;;1641:496:23;980:231:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:42;;;;798:114:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;798:114:41;;;;3451:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3451:409:41;;;;;674:116:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:22;;;;287:117:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:34;;;;1453:51:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1453:51:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4027:485;4090:18;4209:10;4391:27;969:1;4128:7;:14;:39;;4169:29;;;;;;;;;;;;;;;;;;4120:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4120:79:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4222:19;:7;:17;:19::i;:::-;4209:32;;4421:13;;;;:9;:13;;;;;4451;;4209:32;;-1:-1:-1;4421:13:41;-1:-1:-1;4451:13:41;;;;;:54;;4503:1;4451:54;;;4467:14;;;;4451:54;4444:61;4027:485;-1:-1:-1;;;;4027:485:41:o;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;598:119:41:-;651:66;598:119;:::o;795:179:42:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;917:49:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:42;;795:179;-1:-1:-1;;795:179:42:o;2253:229:23:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:23;;-1:-1:-1;2253:229:23;:::o;2788:515:41:-;3065:35;846:66;2894:16;2898:11;2894:3;:16::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;1140:66:23;-1:-1:-1;3103:22:41;;;;:9;:22;;;;;;;;;3143:21;;3166:23;;;;;;;;;;;;;;;;;;;3103:22;-1:-1:-1;3143:21:41;;;;;3135:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;3135:55:41;-1:-1:-1;3200:29:41;;;;;;;3244:52;;3273:22;;;;;3260:11;;3244:52;;3224:5;;3244:52;2788:515;;;;:::o;1659:99:40:-;-1:-1:-1;1747:4:40;;1659:99::o;796:106:22:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;1906:158:41:-;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;;1954:13:41;:11;:13::i;:::-;2056:1;2035:18;:22;1906:158::o;2318:321::-;1020:16:23;;;2426:10:41;1020:16:23;;;;;;;;;2426:10:41;;651:66;;990:47:23;;1001:10;;651:66:41;;990:10:23;:47::i;:::-;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;982:75:23;-1:-1:-1;2469:18:41;:20;;;;;;;;2523:30;;;;;;;;;;;;;;;;;;;;;;2499:21;;;;;;;;;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2568:37;2469:20;;-1:-1:-1;2523:30:41;2469:20;;2568:37;;2469:18;2568:37;-1:-1:-1;2622:10:41;2318:321;-1:-1:-1;;2318:321:41:o;881:137:32:-;936:7;962:49;345:66;962:47;:49::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;1641:496:23:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:23;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-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;1955:175:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:23;;-1:-1:-1;1641:496:23;;;;;;;:::o;980:231:42:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:53;1086:69:42;;;;330:66:44;1086:69:42;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;798:114:41;846:66;798:114;:::o;3451:409::-;3624:35;846:66;3556:16;3560:11;3556:3;:16::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;1140:66:23;;3597:11:41;1764:1;1750:11;:15;:51;;;;;1783:18;;1769:11;:32;1750:51;1803:25;;;;;;;;;;;;;;;;;;1742:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;1742:87:41;-1:-1:-1;3662:22:41;;;;:9;:22;;;;;;;;;3703:21;;3726:22;;;;;;;;;;;;;;;;;;;3662;-1:-1:-1;3703:21:41;;;;;3702:22;3694:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;3694:55:41;-1:-1:-1;3759:28:41;;;;;;;;;3802:51;;3830:22;;;;;3817:11;;3802:51;;3759:21;;3802:51;1216:1:23;3451:409:41;;;;:::o;674:116:22:-;713:7;747:35;485:66;747:33;:35::i;287:117:34:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;1453:51:41:-;;;;;;;;;;;;;;;;;;;;;;:::o;99:109:45:-;156:6;181:20;190:7;199:1;181:8;:20::i;:::-;174:27;99:109;-1:-1:-1;;99:109:45:o;347:94:37:-;422:12;347:94;:::o;1594:117:14:-;1669:16;;;1683:1;1669:16;;;;;;;;;1642:11;;1669:16;;;;;;105:10:-1;1669:16:14;88:34:-1;136:17;;-1:-1;1669:16:14;1665:20;;1702:2;1695:1;1697;1695:4;;;;;;;;;;;;;;;;;;:9;1594:117;;-1:-1:-1;1594:117:14:o;379:134:39:-;490:15;;480:27::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;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;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:36:o;142:539:25:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;739:355:45:-;812:13;837:12;852:27;862:5;869:9;852;:27::i;:::-;1018:59;937:66;927:77;;;923:155;;899:189;-1:-1:-1;;;;899:189:45: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;214:188:45:-;353:32;368:4;353:32;347:39;;323:73::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"../apps/AragonApp.sol\";\nimport \"./ScriptHelpers.sol\";\nimport \"./IEVMScriptExecutor.sol\";\nimport \"./IEVMScriptRegistry.sol\";\n\n\n/* solium-disable function-order */\n// Allow public initialize() to be first\ncontract EVMScriptRegistry is IEVMScriptRegistry, EVMScriptRegistryConstants, AragonApp {\n    using ScriptHelpers for bytes;\n\n    /* Hardcoded constants to save gas\n    bytes32 public constant REGISTRY_ADD_EXECUTOR_ROLE = keccak256(\"REGISTRY_ADD_EXECUTOR_ROLE\");\n    bytes32 public constant REGISTRY_MANAGER_ROLE = keccak256(\"REGISTRY_MANAGER_ROLE\");\n    */\n    bytes32 public constant REGISTRY_ADD_EXECUTOR_ROLE = 0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2;\n    // WARN: Manager can censor all votes and the like happening in an org\n    bytes32 public constant REGISTRY_MANAGER_ROLE = 0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3;\n\n    uint256 internal constant SCRIPT_START_LOCATION = 4;\n\n    string private constant ERROR_INEXISTENT_EXECUTOR = \"EVMREG_INEXISTENT_EXECUTOR\";\n    string private constant ERROR_EXECUTOR_ENABLED = \"EVMREG_EXECUTOR_ENABLED\";\n    string private constant ERROR_EXECUTOR_DISABLED = \"EVMREG_EXECUTOR_DISABLED\";\n    string private constant ERROR_SCRIPT_LENGTH_TOO_SHORT = \"EVMREG_SCRIPT_LENGTH_TOO_SHORT\";\n\n    struct ExecutorEntry {\n        IEVMScriptExecutor executor;\n        bool enabled;\n    }\n\n    uint256 private executorsNextIndex;\n    mapping (uint256 => ExecutorEntry) public executors;\n\n    event EnableExecutor(uint256 indexed executorId, address indexed executorAddress);\n    event DisableExecutor(uint256 indexed executorId, address indexed executorAddress);\n\n    modifier executorExists(uint256 _executorId) {\n        require(_executorId > 0 && _executorId < executorsNextIndex, ERROR_INEXISTENT_EXECUTOR);\n        _;\n    }\n\n    /**\n    * @notice Initialize the registry\n    */\n    function initialize() public onlyInit {\n        initialized();\n        // Create empty record to begin executor IDs at 1\n        executorsNextIndex = 1;\n    }\n\n    /**\n    * @notice Add a new script executor with address `_executor` to the registry\n    * @param _executor Address of the IEVMScriptExecutor that will be added to the registry\n    * @return id Identifier of the executor in the registry\n    */\n    function addScriptExecutor(IEVMScriptExecutor _executor) external auth(REGISTRY_ADD_EXECUTOR_ROLE) returns (uint256 id) {\n        uint256 executorId = executorsNextIndex++;\n        executors[executorId] = ExecutorEntry(_executor, true);\n        emit EnableExecutor(executorId, _executor);\n        return executorId;\n    }\n\n    /**\n    * @notice Disable script executor with ID `_executorId`\n    * @param _executorId Identifier of the executor in the registry\n    */\n    function disableScriptExecutor(uint256 _executorId)\n        external\n        authP(REGISTRY_MANAGER_ROLE, arr(_executorId))\n    {\n        // Note that we don't need to check for an executor's existence in this case, as only\n        // existing executors can be enabled\n        ExecutorEntry storage executorEntry = executors[_executorId];\n        require(executorEntry.enabled, ERROR_EXECUTOR_DISABLED);\n        executorEntry.enabled = false;\n        emit DisableExecutor(_executorId, executorEntry.executor);\n    }\n\n    /**\n    * @notice Enable script executor with ID `_executorId`\n    * @param _executorId Identifier of the executor in the registry\n    */\n    function enableScriptExecutor(uint256 _executorId)\n        external\n        authP(REGISTRY_MANAGER_ROLE, arr(_executorId))\n        executorExists(_executorId)\n    {\n        ExecutorEntry storage executorEntry = executors[_executorId];\n        require(!executorEntry.enabled, ERROR_EXECUTOR_ENABLED);\n        executorEntry.enabled = true;\n        emit EnableExecutor(_executorId, executorEntry.executor);\n    }\n\n    /**\n    * @dev Get the script executor that can execute a particular script based on its first 4 bytes\n    * @param _script EVMScript being inspected\n    */\n    function getScriptExecutor(bytes _script) public view returns (IEVMScriptExecutor) {\n        require(_script.length >= SCRIPT_START_LOCATION, ERROR_SCRIPT_LENGTH_TOO_SHORT);\n        uint256 id = _script.getSpecId();\n\n        // Note that we don't need to check for an executor's existence in this case, as only\n        // existing executors can be enabled\n        ExecutorEntry storage entry = executors[id];\n        return entry.enabled ? entry.executor : IEVMScriptExecutor(0);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
    "exportedSymbols": {
      "EVMScriptRegistry": [
        11657
      ]
    },
    "id": 11658,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11424,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:41"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 11425,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 10490,
        "src": "25:31:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
        "file": "./ScriptHelpers.sol",
        "id": 11426,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 11963,
        "src": "57:29:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 11427,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 11844,
        "src": "87:34:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 11428,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 11871,
        "src": "122:34:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11429,
              "name": "IEVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11870,
              "src": "266:18:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                "typeString": "contract IEVMScriptRegistry"
              }
            },
            "id": 11430,
            "nodeType": "InheritanceSpecifier",
            "src": "266:18:41"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11431,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11850,
              "src": "286:26:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$11850",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 11432,
            "nodeType": "InheritanceSpecifier",
            "src": "286:26:41"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11433,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10489,
              "src": "314:9:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$10489",
                "typeString": "contract AragonApp"
              }
            },
            "id": 11434,
            "nodeType": "InheritanceSpecifier",
            "src": "314:9:41"
          }
        ],
        "contractDependencies": [
          9577,
          10365,
          10489,
          10502,
          10662,
          10712,
          10810,
          10838,
          10871,
          10908,
          11200,
          11422,
          11823,
          11850,
          11870,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11657,
        "linearizedBaseContracts": [
          11657,
          10489,
          9577,
          11823,
          13114,
          11850,
          10908,
          11422,
          10838,
          10662,
          10712,
          10502,
          10871,
          10810,
          11200,
          10365,
          11870
        ],
        "name": "EVMScriptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11437,
            "libraryName": {
              "contractScope": null,
              "id": 11435,
              "name": "ScriptHelpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11962,
              "src": "336:13:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScriptHelpers_$11962",
                "typeString": "library ScriptHelpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "330:30:41",
            "typeName": {
              "id": 11436,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "354:5:41",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 11440,
            "name": "REGISTRY_ADD_EXECUTOR_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "598:119:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 11438,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "598:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307863346539306633386565613863343231326130303963613762383934373934336261346434613538643139623638333431376636353239316431636439656432",
              "id": 11439,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "651:66:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_89065098749499542665412112470485833788131522672750921966929243139564941188818_by_1",
                "typeString": "int_const 8906...(69 digits omitted)...8818"
              },
              "value": "0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11443,
            "name": "REGISTRY_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "798:114:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 11441,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "798:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307866376134353065663333356531383932636234326338636137326537323432333539643737313139323462373564623537313734313064613366363134616133",
              "id": 11442,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "846:66:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112011595107235085372515956694391736358546673401817295630538651321883735181987_by_1",
                "typeString": "int_const 1120...(70 digits omitted)...1987"
              },
              "value": "0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11446,
            "name": "SCRIPT_START_LOCATION",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "919:51:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11444,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "919:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 11445,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "969:1:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 11449,
            "name": "ERROR_INEXISTENT_EXECUTOR",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "977:80:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11447,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "977:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f494e4558495354454e545f4558454355544f52",
              "id": 11448,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1029:28:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_567277bf20a481099b140fabf868d5f9372cc8a7f04146c67033656cb8ff60ba",
                "typeString": "literal_string \"EVMREG_INEXISTENT_EXECUTOR\""
              },
              "value": "EVMREG_INEXISTENT_EXECUTOR"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11452,
            "name": "ERROR_EXECUTOR_ENABLED",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1063:74:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11450,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1063:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f454e41424c4544",
              "id": 11451,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1112:25:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a50bafa9c8686e97a8dde70e0e0e3137cd6c8f2862e66faf05097c5b71450a54",
                "typeString": "literal_string \"EVMREG_EXECUTOR_ENABLED\""
              },
              "value": "EVMREG_EXECUTOR_ENABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11455,
            "name": "ERROR_EXECUTOR_DISABLED",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1143:76:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11453,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1143:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f44495341424c4544",
              "id": 11454,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1193:26:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f208a82b5e06512178289ed18d363585befdf89110b08b7a23b646ead2c75be7",
                "typeString": "literal_string \"EVMREG_EXECUTOR_DISABLED\""
              },
              "value": "EVMREG_EXECUTOR_DISABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11458,
            "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1225:88:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11456,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1225:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254",
              "id": 11457,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1281:32:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7b40663809ad8af7e508993e7d916c51c5b34414addec7e1fcd158fbb7fee248",
                "typeString": "literal_string \"EVMREG_SCRIPT_LENGTH_TOO_SHORT\""
              },
              "value": "EVMREG_SCRIPT_LENGTH_TOO_SHORT"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "EVMScriptRegistry.ExecutorEntry",
            "id": 11463,
            "members": [
              {
                "constant": false,
                "id": 11460,
                "name": "executor",
                "nodeType": "VariableDeclaration",
                "scope": 11463,
                "src": "1351:27:41",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                  "typeString": "contract IEVMScriptExecutor"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 11459,
                  "name": "IEVMScriptExecutor",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 11843,
                  "src": "1351:18:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11462,
                "name": "enabled",
                "nodeType": "VariableDeclaration",
                "scope": 11463,
                "src": "1388:12:41",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 11461,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1388:4:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ExecutorEntry",
            "nodeType": "StructDefinition",
            "scope": 11657,
            "src": "1320:87:41",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11465,
            "name": "executorsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1413:34:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11464,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1413:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11469,
            "name": "executors",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1453:51:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
              "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
            },
            "typeName": {
              "id": 11468,
              "keyType": {
                "id": 11466,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1462:7:41",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1453:34:41",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
              },
              "valueType": {
                "contractScope": null,
                "id": 11467,
                "name": "ExecutorEntry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 11463,
                "src": "1473:13:41",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                  "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11475,
            "name": "EnableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11471,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11475,
                  "src": "1532:26:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11470,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1532:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11473,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 11475,
                  "src": "1560:31:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1560:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1531:61:41"
            },
            "src": "1511:82:41"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11481,
            "name": "DisableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11477,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11481,
                  "src": "1620:26:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11476,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11479,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 11481,
                  "src": "1648:31:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1648:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1619:61:41"
            },
            "src": "1598:83:41"
          },
          {
            "body": {
              "id": 11497,
              "nodeType": "Block",
              "src": "1732:115:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11486,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11483,
                            "src": "1750:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1764:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1750:15:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11489,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11483,
                            "src": "1769:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11490,
                            "name": "executorsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11465,
                            "src": "1783:18:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1769:32:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1750:51:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11493,
                        "name": "ERROR_INEXISTENT_EXECUTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11449,
                        "src": "1803:25:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11485,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "1742:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1742:87:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11495,
                  "nodeType": "ExpressionStatement",
                  "src": "1742:87:41"
                },
                {
                  "id": 11496,
                  "nodeType": "PlaceholderStatement",
                  "src": "1839:1:41"
                }
              ]
            },
            "documentation": null,
            "id": 11498,
            "name": "executorExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11483,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11498,
                  "src": "1711:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11482,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1711:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1710:21:41"
            },
            "src": "1687:160:41",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11510,
              "nodeType": "Block",
              "src": "1944:120:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11503,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "1954:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 11504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1954:13:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11505,
                  "nodeType": "ExpressionStatement",
                  "src": "1954:13:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11506,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11465,
                      "src": "2035:18:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2056:1:41",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2035:22:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11509,
                  "nodeType": "ExpressionStatement",
                  "src": "2035:22:41"
                }
              ]
            },
            "documentation": "@notice Initialize the registry",
            "id": 11511,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 11501,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11500,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "1935:8:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1935:8:41"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11499,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1925:2:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1944:0:41"
            },
            "scope": 11657,
            "src": "1906:158:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11542,
              "nodeType": "Block",
              "src": "2438:201:41",
              "statements": [
                {
                  "assignments": [
                    11522
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11522,
                      "name": "executorId",
                      "nodeType": "VariableDeclaration",
                      "scope": 11543,
                      "src": "2448:18:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11521,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2448:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11525,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 11524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2469:20:41",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 11523,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11465,
                      "src": "2469:18:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2448:41:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11533,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11526,
                        "name": "executors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11469,
                        "src": "2499:9:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                          "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                        }
                      },
                      "id": 11528,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11527,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11522,
                        "src": "2509:10:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2499:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11530,
                          "name": "_executor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11513,
                          "src": "2537:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                            "typeString": "contract IEVMScriptExecutor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 11531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2548:4:41",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                            "typeString": "contract IEVMScriptExecutor"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 11529,
                        "name": "ExecutorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11463,
                        "src": "2523:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ExecutorEntry_$11463_storage_ptr_$",
                          "typeString": "type(struct EVMScriptRegistry.ExecutorEntry storage pointer)"
                        }
                      },
                      "id": 11532,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2523:30:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_memory",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry memory"
                      }
                    },
                    "src": "2499:54:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "id": 11534,
                  "nodeType": "ExpressionStatement",
                  "src": "2499:54:41"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11536,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11522,
                        "src": "2583:10:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11537,
                        "name": "_executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11513,
                        "src": "2595:9:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11535,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11475,
                      "src": "2568:14:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 11538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2568:37:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11539,
                  "nodeType": "EmitStatement",
                  "src": "2563:42:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11540,
                    "name": "executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11522,
                    "src": "2622:10:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11520,
                  "id": 11541,
                  "nodeType": "Return",
                  "src": "2615:17:41"
                }
              ]
            },
            "documentation": "@notice Add a new script executor with address `_executor` to the registry\n@param _executor Address of the IEVMScriptExecutor that will be added to the registry\n@return id Identifier of the executor in the registry",
            "id": 11543,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11516,
                    "name": "REGISTRY_ADD_EXECUTOR_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11440,
                    "src": "2389:26:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11517,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11515,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10409,
                  "src": "2384:4:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2384:32:41"
              }
            ],
            "name": "addScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11513,
                  "name": "_executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "2345:28:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11512,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11843,
                    "src": "2345:18:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:30:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11519,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "2426:10:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:12:41"
            },
            "scope": 11657,
            "src": "2318:321:41",
            "stateMutability": "nonpayable",
            "superFunction": 11857,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11578,
              "nodeType": "Block",
              "src": "2916:387:41",
              "statements": [
                {
                  "assignments": [
                    11555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11555,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 11579,
                      "src": "3065:35:41",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11554,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11463,
                        "src": "3065:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11559,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11556,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11469,
                      "src": "3103:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 11558,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11557,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11545,
                      "src": "3113:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3103:22:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3065:60:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11561,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11555,
                          "src": "3143:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 11562,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "enabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11462,
                        "src": "3143:21:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11563,
                        "name": "ERROR_EXECUTOR_DISABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11455,
                        "src": "3166:23:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11560,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3135:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3135:55:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11565,
                  "nodeType": "ExpressionStatement",
                  "src": "3135:55:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11566,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11555,
                        "src": "3200:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11568,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11462,
                      "src": "3200:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 11569,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3224:5:41",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3200:29:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11571,
                  "nodeType": "ExpressionStatement",
                  "src": "3200:29:41"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11573,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11545,
                        "src": "3260:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11574,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11555,
                          "src": "3273:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 11575,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11460,
                        "src": "3273:22:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11572,
                      "name": "DisableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11481,
                      "src": "3244:15:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 11576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3244:52:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11577,
                  "nodeType": "EmitStatement",
                  "src": "3239:57:41"
                }
              ]
            },
            "documentation": "@notice Disable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 11579,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11548,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11443,
                    "src": "2871:21:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11550,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11545,
                        "src": "2898:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11549,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9404,
                      "src": "2894:3:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 11551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2894:16:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 11552,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11547,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "2865:5:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2865:46:41"
              }
            ],
            "name": "disableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11545,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11579,
                  "src": "2819:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11544,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2819:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2818:21:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11553,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2916:0:41"
            },
            "scope": 11657,
            "src": "2788:515:41",
            "stateMutability": "nonpayable",
            "superFunction": 11862,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11618,
              "nodeType": "Block",
              "src": "3614:246:41",
              "statements": [
                {
                  "assignments": [
                    11594
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11594,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 11619,
                      "src": "3624:35:41",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11593,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11463,
                        "src": "3624:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11598,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11595,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11469,
                      "src": "3662:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 11597,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11596,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11581,
                      "src": "3672:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3662:22:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3624:60:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3702:22:41",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11600,
                            "name": "executorEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11594,
                            "src": "3703:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                              "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                            }
                          },
                          "id": 11601,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "enabled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11462,
                          "src": "3703:21:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11603,
                        "name": "ERROR_EXECUTOR_ENABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11452,
                        "src": "3726:22:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11599,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3694:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3694:55:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11605,
                  "nodeType": "ExpressionStatement",
                  "src": "3694:55:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11606,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11594,
                        "src": "3759:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11608,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11462,
                      "src": "3759:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 11609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3783:4:41",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3759:28:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11611,
                  "nodeType": "ExpressionStatement",
                  "src": "3759:28:41"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11613,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11581,
                        "src": "3817:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11614,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11594,
                          "src": "3830:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 11615,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11460,
                        "src": "3830:22:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11612,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11475,
                      "src": "3802:14:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 11616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3802:51:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11617,
                  "nodeType": "EmitStatement",
                  "src": "3797:56:41"
                }
              ]
            },
            "documentation": "@notice Enable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 11619,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11584,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11443,
                    "src": "3533:21:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11586,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11581,
                        "src": "3560:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11585,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9404,
                      "src": "3556:3:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 11587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3556:16:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 11588,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11583,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "3527:5:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3527:46:41"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11590,
                    "name": "_executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11581,
                    "src": "3597:11:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 11591,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11589,
                  "name": "executorExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11498,
                  "src": "3582:14:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3582:27:41"
              }
            ],
            "name": "enableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11582,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11581,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11619,
                  "src": "3481:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11580,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3480:21:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3614:0:41"
            },
            "scope": 11657,
            "src": "3451:409:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11655,
              "nodeType": "Block",
              "src": "4110:402:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11627,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11621,
                            "src": "4128:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 11628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4128:14:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11629,
                          "name": "SCRIPT_START_LOCATION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11446,
                          "src": "4146:21:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4128:39:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11631,
                        "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11458,
                        "src": "4169:29:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11626,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4120:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4120:79:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11633,
                  "nodeType": "ExpressionStatement",
                  "src": "4120:79:41"
                },
                {
                  "assignments": [
                    11635
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11635,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 11656,
                      "src": "4209:10:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11634,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4209:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11639,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11636,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11621,
                        "src": "4222:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 11637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSpecId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11885,
                      "src": "4222:17:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (uint32)"
                      }
                    },
                    "id": 11638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4222:19:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4209:32:41"
                },
                {
                  "assignments": [
                    11641
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11641,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 11656,
                      "src": "4391:27:41",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11640,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11463,
                        "src": "4391:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11645,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11642,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11469,
                      "src": "4421:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 11644,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11643,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11635,
                      "src": "4431:2:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4421:13:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4391:43:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11646,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11641,
                        "src": "4451:5:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11462,
                      "src": "4451:13:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4503:1:41",
                          "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": 11650,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11843,
                        "src": "4484:18:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$11843_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 11652,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4484:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "id": 11653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4451:54:41",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11648,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11641,
                        "src": "4467:5:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11649,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11460,
                      "src": "4467:14:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 11625,
                  "id": 11654,
                  "nodeType": "Return",
                  "src": "4444:61:41"
                }
              ]
            },
            "documentation": "@dev Get the script executor that can execute a particular script based on its first 4 bytes\n@param _script EVMScript being inspected",
            "id": 11656,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11622,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11621,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11656,
                  "src": "4054:13:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11620,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4054:5:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4053:15:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11624,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11656,
                  "src": "4090:18:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11623,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11843,
                    "src": "4090:18:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4089:20:41"
            },
            "scope": 11657,
            "src": "4027:485:41",
            "stateMutability": "view",
            "superFunction": 11869,
            "visibility": "public"
          }
        ],
        "scope": 11658,
        "src": "236:4278:41"
      }
    ],
    "src": "0:4515:41"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
    "exportedSymbols": {
      "EVMScriptRegistry": [
        11657
      ]
    },
    "id": 11658,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11424,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:41"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 11425,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 10490,
        "src": "25:31:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
        "file": "./ScriptHelpers.sol",
        "id": 11426,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 11963,
        "src": "57:29:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 11427,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 11844,
        "src": "87:34:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 11428,
        "nodeType": "ImportDirective",
        "scope": 11658,
        "sourceUnit": 11871,
        "src": "122:34:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11429,
              "name": "IEVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11870,
              "src": "266:18:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                "typeString": "contract IEVMScriptRegistry"
              }
            },
            "id": 11430,
            "nodeType": "InheritanceSpecifier",
            "src": "266:18:41"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11431,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11850,
              "src": "286:26:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$11850",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 11432,
            "nodeType": "InheritanceSpecifier",
            "src": "286:26:41"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11433,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10489,
              "src": "314:9:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$10489",
                "typeString": "contract AragonApp"
              }
            },
            "id": 11434,
            "nodeType": "InheritanceSpecifier",
            "src": "314:9:41"
          }
        ],
        "contractDependencies": [
          9577,
          10365,
          10489,
          10502,
          10662,
          10712,
          10810,
          10838,
          10871,
          10908,
          11200,
          11422,
          11823,
          11850,
          11870,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11657,
        "linearizedBaseContracts": [
          11657,
          10489,
          9577,
          11823,
          13114,
          11850,
          10908,
          11422,
          10838,
          10662,
          10712,
          10502,
          10871,
          10810,
          11200,
          10365,
          11870
        ],
        "name": "EVMScriptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11437,
            "libraryName": {
              "contractScope": null,
              "id": 11435,
              "name": "ScriptHelpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11962,
              "src": "336:13:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScriptHelpers_$11962",
                "typeString": "library ScriptHelpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "330:30:41",
            "typeName": {
              "id": 11436,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "354:5:41",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 11440,
            "name": "REGISTRY_ADD_EXECUTOR_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "598:119:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 11438,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "598:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307863346539306633386565613863343231326130303963613762383934373934336261346434613538643139623638333431376636353239316431636439656432",
              "id": 11439,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "651:66:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_89065098749499542665412112470485833788131522672750921966929243139564941188818_by_1",
                "typeString": "int_const 8906...(69 digits omitted)...8818"
              },
              "value": "0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11443,
            "name": "REGISTRY_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "798:114:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 11441,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "798:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307866376134353065663333356531383932636234326338636137326537323432333539643737313139323462373564623537313734313064613366363134616133",
              "id": 11442,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "846:66:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112011595107235085372515956694391736358546673401817295630538651321883735181987_by_1",
                "typeString": "int_const 1120...(70 digits omitted)...1987"
              },
              "value": "0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11446,
            "name": "SCRIPT_START_LOCATION",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "919:51:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11444,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "919:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 11445,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "969:1:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 11449,
            "name": "ERROR_INEXISTENT_EXECUTOR",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "977:80:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11447,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "977:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f494e4558495354454e545f4558454355544f52",
              "id": 11448,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1029:28:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_567277bf20a481099b140fabf868d5f9372cc8a7f04146c67033656cb8ff60ba",
                "typeString": "literal_string \"EVMREG_INEXISTENT_EXECUTOR\""
              },
              "value": "EVMREG_INEXISTENT_EXECUTOR"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11452,
            "name": "ERROR_EXECUTOR_ENABLED",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1063:74:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11450,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1063:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f454e41424c4544",
              "id": 11451,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1112:25:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a50bafa9c8686e97a8dde70e0e0e3137cd6c8f2862e66faf05097c5b71450a54",
                "typeString": "literal_string \"EVMREG_EXECUTOR_ENABLED\""
              },
              "value": "EVMREG_EXECUTOR_ENABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11455,
            "name": "ERROR_EXECUTOR_DISABLED",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1143:76:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11453,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1143:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f44495341424c4544",
              "id": 11454,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1193:26:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f208a82b5e06512178289ed18d363585befdf89110b08b7a23b646ead2c75be7",
                "typeString": "literal_string \"EVMREG_EXECUTOR_DISABLED\""
              },
              "value": "EVMREG_EXECUTOR_DISABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11458,
            "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1225:88:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11456,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1225:6:41",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254",
              "id": 11457,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1281:32:41",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7b40663809ad8af7e508993e7d916c51c5b34414addec7e1fcd158fbb7fee248",
                "typeString": "literal_string \"EVMREG_SCRIPT_LENGTH_TOO_SHORT\""
              },
              "value": "EVMREG_SCRIPT_LENGTH_TOO_SHORT"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "EVMScriptRegistry.ExecutorEntry",
            "id": 11463,
            "members": [
              {
                "constant": false,
                "id": 11460,
                "name": "executor",
                "nodeType": "VariableDeclaration",
                "scope": 11463,
                "src": "1351:27:41",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                  "typeString": "contract IEVMScriptExecutor"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 11459,
                  "name": "IEVMScriptExecutor",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 11843,
                  "src": "1351:18:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11462,
                "name": "enabled",
                "nodeType": "VariableDeclaration",
                "scope": 11463,
                "src": "1388:12:41",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 11461,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1388:4:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ExecutorEntry",
            "nodeType": "StructDefinition",
            "scope": 11657,
            "src": "1320:87:41",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11465,
            "name": "executorsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1413:34:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11464,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1413:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11469,
            "name": "executors",
            "nodeType": "VariableDeclaration",
            "scope": 11657,
            "src": "1453:51:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
              "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
            },
            "typeName": {
              "id": 11468,
              "keyType": {
                "id": 11466,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1462:7:41",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1453:34:41",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
              },
              "valueType": {
                "contractScope": null,
                "id": 11467,
                "name": "ExecutorEntry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 11463,
                "src": "1473:13:41",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                  "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11475,
            "name": "EnableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11471,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11475,
                  "src": "1532:26:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11470,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1532:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11473,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 11475,
                  "src": "1560:31:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1560:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1531:61:41"
            },
            "src": "1511:82:41"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11481,
            "name": "DisableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11477,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11481,
                  "src": "1620:26:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11476,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11479,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 11481,
                  "src": "1648:31:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1648:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1619:61:41"
            },
            "src": "1598:83:41"
          },
          {
            "body": {
              "id": 11497,
              "nodeType": "Block",
              "src": "1732:115:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11486,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11483,
                            "src": "1750:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1764:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1750:15:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11489,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11483,
                            "src": "1769:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11490,
                            "name": "executorsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11465,
                            "src": "1783:18:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1769:32:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1750:51:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11493,
                        "name": "ERROR_INEXISTENT_EXECUTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11449,
                        "src": "1803:25:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11485,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "1742:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1742:87:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11495,
                  "nodeType": "ExpressionStatement",
                  "src": "1742:87:41"
                },
                {
                  "id": 11496,
                  "nodeType": "PlaceholderStatement",
                  "src": "1839:1:41"
                }
              ]
            },
            "documentation": null,
            "id": 11498,
            "name": "executorExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11483,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11498,
                  "src": "1711:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11482,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1711:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1710:21:41"
            },
            "src": "1687:160:41",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11510,
              "nodeType": "Block",
              "src": "1944:120:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11503,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "1954:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 11504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1954:13:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11505,
                  "nodeType": "ExpressionStatement",
                  "src": "1954:13:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11506,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11465,
                      "src": "2035:18:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2056:1:41",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2035:22:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11509,
                  "nodeType": "ExpressionStatement",
                  "src": "2035:22:41"
                }
              ]
            },
            "documentation": "@notice Initialize the registry",
            "id": 11511,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 11501,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11500,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "1935:8:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1935:8:41"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11499,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1925:2:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1944:0:41"
            },
            "scope": 11657,
            "src": "1906:158:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11542,
              "nodeType": "Block",
              "src": "2438:201:41",
              "statements": [
                {
                  "assignments": [
                    11522
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11522,
                      "name": "executorId",
                      "nodeType": "VariableDeclaration",
                      "scope": 11543,
                      "src": "2448:18:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11521,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2448:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11525,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 11524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2469:20:41",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 11523,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11465,
                      "src": "2469:18:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2448:41:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11533,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11526,
                        "name": "executors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11469,
                        "src": "2499:9:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                          "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                        }
                      },
                      "id": 11528,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11527,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11522,
                        "src": "2509:10:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2499:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11530,
                          "name": "_executor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11513,
                          "src": "2537:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                            "typeString": "contract IEVMScriptExecutor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 11531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2548:4:41",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                            "typeString": "contract IEVMScriptExecutor"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 11529,
                        "name": "ExecutorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11463,
                        "src": "2523:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ExecutorEntry_$11463_storage_ptr_$",
                          "typeString": "type(struct EVMScriptRegistry.ExecutorEntry storage pointer)"
                        }
                      },
                      "id": 11532,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2523:30:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_memory",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry memory"
                      }
                    },
                    "src": "2499:54:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "id": 11534,
                  "nodeType": "ExpressionStatement",
                  "src": "2499:54:41"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11536,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11522,
                        "src": "2583:10:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11537,
                        "name": "_executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11513,
                        "src": "2595:9:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11535,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11475,
                      "src": "2568:14:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 11538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2568:37:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11539,
                  "nodeType": "EmitStatement",
                  "src": "2563:42:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11540,
                    "name": "executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11522,
                    "src": "2622:10:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11520,
                  "id": 11541,
                  "nodeType": "Return",
                  "src": "2615:17:41"
                }
              ]
            },
            "documentation": "@notice Add a new script executor with address `_executor` to the registry\n@param _executor Address of the IEVMScriptExecutor that will be added to the registry\n@return id Identifier of the executor in the registry",
            "id": 11543,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11516,
                    "name": "REGISTRY_ADD_EXECUTOR_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11440,
                    "src": "2389:26:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11517,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11515,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10409,
                  "src": "2384:4:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2384:32:41"
              }
            ],
            "name": "addScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11513,
                  "name": "_executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "2345:28:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11512,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11843,
                    "src": "2345:18:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:30:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11519,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "2426:10:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:12:41"
            },
            "scope": 11657,
            "src": "2318:321:41",
            "stateMutability": "nonpayable",
            "superFunction": 11857,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11578,
              "nodeType": "Block",
              "src": "2916:387:41",
              "statements": [
                {
                  "assignments": [
                    11555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11555,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 11579,
                      "src": "3065:35:41",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11554,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11463,
                        "src": "3065:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11559,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11556,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11469,
                      "src": "3103:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 11558,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11557,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11545,
                      "src": "3113:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3103:22:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3065:60:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11561,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11555,
                          "src": "3143:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 11562,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "enabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11462,
                        "src": "3143:21:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11563,
                        "name": "ERROR_EXECUTOR_DISABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11455,
                        "src": "3166:23:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11560,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3135:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3135:55:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11565,
                  "nodeType": "ExpressionStatement",
                  "src": "3135:55:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11566,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11555,
                        "src": "3200:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11568,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11462,
                      "src": "3200:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 11569,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3224:5:41",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3200:29:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11571,
                  "nodeType": "ExpressionStatement",
                  "src": "3200:29:41"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11573,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11545,
                        "src": "3260:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11574,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11555,
                          "src": "3273:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 11575,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11460,
                        "src": "3273:22:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11572,
                      "name": "DisableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11481,
                      "src": "3244:15:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 11576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3244:52:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11577,
                  "nodeType": "EmitStatement",
                  "src": "3239:57:41"
                }
              ]
            },
            "documentation": "@notice Disable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 11579,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11548,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11443,
                    "src": "2871:21:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11550,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11545,
                        "src": "2898:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11549,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9404,
                      "src": "2894:3:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 11551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2894:16:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 11552,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11547,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "2865:5:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2865:46:41"
              }
            ],
            "name": "disableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11545,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11579,
                  "src": "2819:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11544,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2819:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2818:21:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11553,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2916:0:41"
            },
            "scope": 11657,
            "src": "2788:515:41",
            "stateMutability": "nonpayable",
            "superFunction": 11862,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11618,
              "nodeType": "Block",
              "src": "3614:246:41",
              "statements": [
                {
                  "assignments": [
                    11594
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11594,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 11619,
                      "src": "3624:35:41",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11593,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11463,
                        "src": "3624:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11598,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11595,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11469,
                      "src": "3662:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 11597,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11596,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11581,
                      "src": "3672:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3662:22:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3624:60:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3702:22:41",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11600,
                            "name": "executorEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11594,
                            "src": "3703:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                              "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                            }
                          },
                          "id": 11601,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "enabled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11462,
                          "src": "3703:21:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11603,
                        "name": "ERROR_EXECUTOR_ENABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11452,
                        "src": "3726:22:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11599,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3694:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3694:55:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11605,
                  "nodeType": "ExpressionStatement",
                  "src": "3694:55:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11606,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11594,
                        "src": "3759:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11608,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11462,
                      "src": "3759:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 11609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3783:4:41",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3759:28:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11611,
                  "nodeType": "ExpressionStatement",
                  "src": "3759:28:41"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11613,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11581,
                        "src": "3817:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11614,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11594,
                          "src": "3830:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 11615,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11460,
                        "src": "3830:22:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11612,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11475,
                      "src": "3802:14:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 11616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3802:51:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11617,
                  "nodeType": "EmitStatement",
                  "src": "3797:56:41"
                }
              ]
            },
            "documentation": "@notice Enable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 11619,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11584,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11443,
                    "src": "3533:21:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11586,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11581,
                        "src": "3560:11:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11585,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9404,
                      "src": "3556:3:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 11587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3556:16:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 11588,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11583,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "3527:5:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3527:46:41"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11590,
                    "name": "_executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11581,
                    "src": "3597:11:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 11591,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11589,
                  "name": "executorExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11498,
                  "src": "3582:14:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3582:27:41"
              }
            ],
            "name": "enableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11582,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11581,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11619,
                  "src": "3481:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11580,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3480:21:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3614:0:41"
            },
            "scope": 11657,
            "src": "3451:409:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11655,
              "nodeType": "Block",
              "src": "4110:402:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11627,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11621,
                            "src": "4128:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 11628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4128:14:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11629,
                          "name": "SCRIPT_START_LOCATION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11446,
                          "src": "4146:21:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4128:39:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11631,
                        "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11458,
                        "src": "4169:29:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11626,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4120:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4120:79:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11633,
                  "nodeType": "ExpressionStatement",
                  "src": "4120:79:41"
                },
                {
                  "assignments": [
                    11635
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11635,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 11656,
                      "src": "4209:10:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11634,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4209:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11639,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11636,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11621,
                        "src": "4222:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 11637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSpecId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11885,
                      "src": "4222:17:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (uint32)"
                      }
                    },
                    "id": 11638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4222:19:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4209:32:41"
                },
                {
                  "assignments": [
                    11641
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11641,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 11656,
                      "src": "4391:27:41",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11640,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11463,
                        "src": "4391:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11645,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11642,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11469,
                      "src": "4421:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$11463_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 11644,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11643,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11635,
                      "src": "4431:2:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4421:13:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4391:43:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11646,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11641,
                        "src": "4451:5:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11462,
                      "src": "4451:13:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4503:1:41",
                          "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": 11650,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11843,
                        "src": "4484:18:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$11843_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 11652,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4484:21:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "id": 11653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4451:54:41",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11648,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11641,
                        "src": "4467:5:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$11463_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 11649,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11460,
                      "src": "4467:14:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 11625,
                  "id": 11654,
                  "nodeType": "Return",
                  "src": "4444:61:41"
                }
              ]
            },
            "documentation": "@dev Get the script executor that can execute a particular script based on its first 4 bytes\n@param _script EVMScript being inspected",
            "id": 11656,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11622,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11621,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11656,
                  "src": "4054:13:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11620,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4054:5:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4053:15:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 11625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11624,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11656,
                  "src": "4090:18:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11623,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11843,
                    "src": "4090:18:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4089:20:41"
            },
            "scope": 11657,
            "src": "4027:485:41",
            "stateMutability": "view",
            "superFunction": 11869,
            "visibility": "public"
          }
        ],
        "scope": 11658,
        "src": "236:4278:41"
      }
    ],
    "src": "0:4515:41"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.783Z"
}