{
  "contractName": "MMInstantiator",
  "sourceName": "contracts/MMInstantiator.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "FinishedProofs",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "FinishedReplay",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_initialHash",
          "type": "bytes32"
        }
      ],
      "name": "MemoryCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_wasRead",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "_position",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes8",
          "name": "_value",
          "type": "bytes8"
        }
      ],
      "name": "ValueProved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "_position",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes8",
          "name": "_value",
          "type": "bytes8"
        }
      ],
      "name": "ValueRead",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "_position",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes8",
          "name": "_value",
          "type": "bytes8"
        }
      ],
      "name": "ValueWritten",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "currentIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "finishProofPhase",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "finishReplayPhase",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getCurrentState",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_roundDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_timeToStartMachine",
          "type": "uint256"
        }
      ],
      "name": "getCurrentStateDeadline",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_roundDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_timeToStartMachine",
          "type": "uint256"
        }
      ],
      "name": "getMaxInstanceDuration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getNonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "currentNonce",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getRWArrays",
      "outputs": [
        {
          "internalType": "uint64[]",
          "name": "",
          "type": "uint64[]"
        },
        {
          "internalType": "bytes8[]",
          "name": "",
          "type": "bytes8[]"
        },
        {
          "internalType": "bool[]",
          "name": "",
          "type": "bool[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "internalType": "address",
          "name": "_provider",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_initialHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_newHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_numberSubmitted",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_currentState",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getSubInstances",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "initialHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_provider",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_initialHash",
          "type": "bytes32"
        }
      ],
      "name": "instantiate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "isActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "isConcerned",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "newHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_position",
          "type": "uint64"
        },
        {
          "internalType": "bytes8",
          "name": "_value",
          "type": "bytes8"
        },
        {
          "internalType": "bytes32[]",
          "name": "proof",
          "type": "bytes32[]"
        }
      ],
      "name": "proveRead",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_position",
          "type": "uint64"
        },
        {
          "internalType": "bytes8",
          "name": "_oldValue",
          "type": "bytes8"
        },
        {
          "internalType": "bytes8",
          "name": "_newValue",
          "type": "bytes8"
        },
        {
          "internalType": "bytes32[]",
          "name": "proof",
          "type": "bytes32[]"
        }
      ],
      "name": "proveWrite",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "provider",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "stateIsFinishedReplay",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "stateIsWaitingProofs",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "stateIsWaitingReplay",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000805534801561001457600080fd5b50611d3c806100246000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806382afd23b116100b8578063a9c7a1e61161007c578063a9c7a1e614610390578063ac448b1614610462578063ade5f4171461052b578063c526656c14610548578063db1de4191461060d578063f154f91d1461063657610137565b806382afd23b146102e057806384dfd44d146102fd5780638a05e47814610320578063906458401461035657806396f429ba1461037357610137565b806343d4b78b116100ff57806343d4b78b146101ef57806352cc70c61461020c5780635748c1301461024557806373df1612146102625780637d036b0d146102c357610137565b806301ff62ab1461013c5780631c5d3c601461017c57806326987b60146101995780633d46b819146101b35780633ed5d456146101d0575b600080fd5b6101686004803603604081101561015257600080fd5b50803590602001356001600160a01b0316610731565b604080519115158252519081900360200190f35b6101686004803603602081101561019257600080fd5b5035610755565b6101a16107c9565b60408051918252519081900360200190f35b6101a1600480360360208110156101c957600080fd5b50356107cf565b6101ed600480360360208110156101e657600080fd5b5035610875565b005b6101686004803603602081101561020557600080fd5b50356109f6565b6102296004803603602081101561022257600080fd5b5035610a44565b604080516001600160a01b039092168252519081900360200190f35b6101a16004803603602081101561025b57600080fd5b5035610aab565b61028e6004803603604081101561027857600080fd5b50803590602001356001600160a01b0316610bf3565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101ed600480360360208110156102d957600080fd5b5035610d76565b610168600480360360208110156102f657600080fd5b5035610eef565b6101a16004803603604081101561031357600080fd5b5080359060200135610f04565b6101a16004803603606081101561033657600080fd5b506001600160a01b03813581169160208101359091169060400135610f40565b6101a16004803603602081101561036c57600080fd5b5035610ffd565b6101686004803603602081101561038957600080fd5b503561105c565b6101ed600480360360a08110156103a657600080fd5b8135916001600160401b03602082013516916001600160c01b0319604083013581169260608101359091169181019060a0810160808201356401000000008111156103f057600080fd5b82018360208201111561040257600080fd5b8035906020019184602083028401116401000000008311171561042457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110aa945050505050565b6101ed6004803603608081101561047857600080fd5b8135916001600160401b03602082013516916001600160c01b031960408301351691908101906080810160608201356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460208302840111640100000000831117156104ed57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114cd945050505050565b6101a16004803603602081101561054157600080fd5b5035611825565b6105746004803603604081101561055e57600080fd5b50803590602001356001600160a01b0316611883565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156105b85781810151838201526020016105a0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105f75781810151838201526020016105df565b5050505090500194505050505060405180910390f35b6101a16004803603606081101561062357600080fd5b508035906020810135906040013561189e565b6106536004803603602081101561064c57600080fd5b503561190e565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561069b578181015183820152602001610683565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156106da5781810151838201526020016106c2565b50505050905001848103825285818151815260200191508051906020019060200280838360005b83811015610719578181015183820152602001610701565b50505050905001965050505050505060405180910390f35b600091825260036020526040909120600101546001600160a01b0391821691161490565b600081806000541161079c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60005b60008481526003602052604090206005015460ff1660028111156107bf57fe5b1491505b50919050565b60005481565b6000818060005411610816576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b61081f81610eef565b610861576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b8080600054116108ba576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020546001600160a01b0316338114610921576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008381526002602052604090208054600101905582610940816109f6565b61097b5760405162461bcd60e51b8152600401808060200182810382526023815260200180611cc46023913960400191505060405180910390fd5b600084815260036020526040812061099891600490910190611b7e565b6000848152600360205260409020600501805460ff191660021790556109bd84611b04565b6040805185815290517feac25e5c6b8f91fcaaec2cbaed6317b8403630d1f793fc32c10fa4731a464e879181900360200190a150505050565b6000818060005411610a3d576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600161079f565b6000818060005411610a8b576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360205260409020600101546001600160a01b031690565b6000818060005411610af2576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60008381526003602052604081206005015460ff166002811115610b1257fe5b1415610b30576c57616974696e6750726f6f667360981b91506107c3565b600160008481526003602052604090206005015460ff166002811115610b5257fe5b1415610b70576c57616974696e675265706c617960981b91506107c3565b600260008481526003602052604090206005015460ff166002811115610b9257fe5b1415610bb1576d46696e69736865645265706c617960901b91506107c3565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b6000806000806000868060005411610c40576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b610c48611b9f565b6000898152600360208181526040808420815160c08101835281546001600160a01b039081168252600183015416818501526002820154818401529381015460608501526004810180548351818602810186019094528084529495919460808701949192909184015b82821015610d12576000848152602090819020604080516060810182529185015460ff81161515835261010081046001600160401b031683850152600160481b900460c01b6001600160c01b03191690820152825260019092019101610cb1565b50505090825250600582015460209091019060ff166002811115610d3257fe5b6002811115610d3d57fe5b815250509050806020015181604001518260600151836080015151610d618d610aab565b939d929c50909a509850909650945050505050565b808060005411610dbb576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020600101546001600160a01b0316338114610e25576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040812080546001019055839060008581526003602052604090206005015460ff166002811115610e5c57fe5b14610e985760405162461bcd60e51b815260040180806020018281038252603a815260200180611c57603a913960400191505060405180910390fd5b600084815260036020908152604091829020600501805460ff19166001179055815186815291517f0b1229d47b7ccd1dde07b4148a6c9336fd9d5fb57cca980e709576e96ae600ed9281900390910190a150505050565b60009081526001602052604090205460ff1690565b600080610f1360008585611b27565b90506000610f2360018686611b27565b90506000610f3360008787611b27565b9190920101949350505050565b60008054815260036020818152604080842080546001600160a01b038981166001600160a01b0319928316178355600183018054918a16919092161790556002810186905592830185905560058301805460ff191690558354815190815291820185905280517f9d7a7145d65060279d0bc06f7f03a791000bbaa9b8a8e75c3c10e2d24348791b9281900390910190a150506000805481526001602081905260408220805460ff19168217905581549081019091555b9392505050565b6000818060005411611044576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360208190526040909120015490565b60008180600054116110a3576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600261079f565b8480600054116110ef576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000868152600360205260409020600101546001600160a01b0316338114611159576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600087815260026020526040812080546001019055879060008981526003602052604090206005015460ff16600281111561119057fe5b146111cc5760405162461bcd60e51b8152600401808060200182810382526034815260200180611bff6034913960400191505060405180910390fd5b600360008981526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8989886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561126e578181015183820152602001611256565b5050505090500194505050505060206040518083038186803b15801561129357600080fd5b505af41580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b5051146112fb5760405162461bcd60e51b8152600401808060200182810382526024815260200180611c336024913960400191505060405180910390fd5b604051638492d93b60e01b81526001600160401b038816600482019081526001600160c01b03198716602483015260606044830190815286516064840152865173__$c7dbd794b8c7b5c2028db781007df1176e$__93638492d93b938c938b938b93608401906020808601910280838360005b8381101561138657818101518382015260200161136e565b5050505090500194505050505060206040518083038186803b1580156113ab57600080fd5b505af41580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b50516000898152600360208181526040808420928301949094558351606080820186528482526001600160401b03808e168385018181526001600160c01b03198e16858a0181815260049098018054600181018255908a52878a209651960180549251985160c01c600160481b0267ffffffffffffffff60481b19999095166101000268ffffffffffffffff001997151560ff19909416939093179690961691909117969096169190911790925585518e815292830194909452818501529182015290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a15050505050505050565b838060005411611512576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600101546001600160a01b031633811461157c576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600086815260026020526040812080546001019055869060008881526003602052604090206005015460ff1660028111156115b357fe5b146115ef5760405162461bcd60e51b8152600401808060200182810382526033815260200180611c916033913960400191505060405180910390fd5b600360008881526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8888886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611691578181015183820152602001611679565b5050505090500194505050505060206040518083038186803b1580156116b657600080fd5b505af41580156116ca573d6000803e3d6000fd5b505050506040513d60208110156116e057600080fd5b505114611734576040805162461bcd60e51b815260206004820152601b60248201527f4d65726b6c652070726f6f6620646f6573206e6f74206d617463680000000000604482015290519081900360640190fd5b600087815260036020908152604080832081516060808201845260018083526001600160401b03808e168488018181526001600160c01b03198f16868901818152600490980180548087018255908c529a8a9020965196909a0180549151975160c01c600160481b0267ffffffffffffffff60481b19989094166101000268ffffffffffffffff001997151560ff19909316929092179690961617959095161790925583518d8152948501919091528383019190915282019290925290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a150505050505050565b600081806000541161186c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b505060009081526003602052604090206002015490565b50506040805160008082526020820190815281830190925291565b60008380600054116118e5576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600501546119059060ff168585611b27565b95945050505050565b60008181526003602052604090206004018054606091829182919082816001600160401b038111801561194057600080fd5b5060405190808252806020026020018201604052801561196a578160200160208202803683370190505b5090506060826001600160401b038111801561198557600080fd5b506040519080825280602002602001820160405280156119af578160200160208202803683370190505b5090506060836001600160401b03811180156119ca57600080fd5b506040519080825280602002602001820160405280156119f4578160200160208202803683370190505b50905060005b84811015611af457858181548110611a0e57fe5b9060005260206000200160000160019054906101000a90046001600160401b0316848281518110611a3b57fe5b60200260200101906001600160401b031690816001600160401b031681525050858181548110611a6757fe5b9060005260206000200160000160099054906101000a900460c01b838281518110611a8e57fe5b60200260200101906001600160c01b03191690816001600160c01b03191681525050858181548110611abc57fe5b600091825260209091200154825160ff90911690839083908110611adc57fe5b911515602092830291909101909101526001016119fa565b5091989097509095509350505050565b6000908152600160209081526040808320805460ff191690556002909152812055565b600080846002811115611b3657fe5b1415611b485750600282028101610ff6565b6001846002811115611b5657fe5b1415611b63575081610ff6565b6002846002811115611b7157fe5b1415610bb1575081610ff6565b5080546000825590600052602060002090810190611b9c9190611bd1565b50565b6040805160c081018252600080825260208201819052918101829052606080820183905260808201529060a082015290565b5b80821115611bfa57805470ffffffffffffffffffffffffffffffffff19168155600101611bd2565b509056fe43757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f766557726974654d65726b6c652070726f6f66206f6620777269746520646f6573206e6f74206d6174636843757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742066696e69736850726f6f66506861736543757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f7665526561645374617465206f66204d4d2073686f756c642062652057616974696e675265706c6179496e646578206e6f7420696e7374616e74696174656400000000000000000000a264697066735822122022bd84b57df9b7cba5824423b88a08c264a777cf3f68b1afeaf8e7a092cb650864736f6c63430007040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c806382afd23b116100b8578063a9c7a1e61161007c578063a9c7a1e614610390578063ac448b1614610462578063ade5f4171461052b578063c526656c14610548578063db1de4191461060d578063f154f91d1461063657610137565b806382afd23b146102e057806384dfd44d146102fd5780638a05e47814610320578063906458401461035657806396f429ba1461037357610137565b806343d4b78b116100ff57806343d4b78b146101ef57806352cc70c61461020c5780635748c1301461024557806373df1612146102625780637d036b0d146102c357610137565b806301ff62ab1461013c5780631c5d3c601461017c57806326987b60146101995780633d46b819146101b35780633ed5d456146101d0575b600080fd5b6101686004803603604081101561015257600080fd5b50803590602001356001600160a01b0316610731565b604080519115158252519081900360200190f35b6101686004803603602081101561019257600080fd5b5035610755565b6101a16107c9565b60408051918252519081900360200190f35b6101a1600480360360208110156101c957600080fd5b50356107cf565b6101ed600480360360208110156101e657600080fd5b5035610875565b005b6101686004803603602081101561020557600080fd5b50356109f6565b6102296004803603602081101561022257600080fd5b5035610a44565b604080516001600160a01b039092168252519081900360200190f35b6101a16004803603602081101561025b57600080fd5b5035610aab565b61028e6004803603604081101561027857600080fd5b50803590602001356001600160a01b0316610bf3565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101ed600480360360208110156102d957600080fd5b5035610d76565b610168600480360360208110156102f657600080fd5b5035610eef565b6101a16004803603604081101561031357600080fd5b5080359060200135610f04565b6101a16004803603606081101561033657600080fd5b506001600160a01b03813581169160208101359091169060400135610f40565b6101a16004803603602081101561036c57600080fd5b5035610ffd565b6101686004803603602081101561038957600080fd5b503561105c565b6101ed600480360360a08110156103a657600080fd5b8135916001600160401b03602082013516916001600160c01b0319604083013581169260608101359091169181019060a0810160808201356401000000008111156103f057600080fd5b82018360208201111561040257600080fd5b8035906020019184602083028401116401000000008311171561042457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110aa945050505050565b6101ed6004803603608081101561047857600080fd5b8135916001600160401b03602082013516916001600160c01b031960408301351691908101906080810160608201356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460208302840111640100000000831117156104ed57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114cd945050505050565b6101a16004803603602081101561054157600080fd5b5035611825565b6105746004803603604081101561055e57600080fd5b50803590602001356001600160a01b0316611883565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156105b85781810151838201526020016105a0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105f75781810151838201526020016105df565b5050505090500194505050505060405180910390f35b6101a16004803603606081101561062357600080fd5b508035906020810135906040013561189e565b6106536004803603602081101561064c57600080fd5b503561190e565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561069b578181015183820152602001610683565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156106da5781810151838201526020016106c2565b50505050905001848103825285818151815260200191508051906020019060200280838360005b83811015610719578181015183820152602001610701565b50505050905001965050505050505060405180910390f35b600091825260036020526040909120600101546001600160a01b0391821691161490565b600081806000541161079c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60005b60008481526003602052604090206005015460ff1660028111156107bf57fe5b1491505b50919050565b60005481565b6000818060005411610816576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b61081f81610eef565b610861576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b8080600054116108ba576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020546001600160a01b0316338114610921576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008381526002602052604090208054600101905582610940816109f6565b61097b5760405162461bcd60e51b8152600401808060200182810382526023815260200180611cc46023913960400191505060405180910390fd5b600084815260036020526040812061099891600490910190611b7e565b6000848152600360205260409020600501805460ff191660021790556109bd84611b04565b6040805185815290517feac25e5c6b8f91fcaaec2cbaed6317b8403630d1f793fc32c10fa4731a464e879181900360200190a150505050565b6000818060005411610a3d576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600161079f565b6000818060005411610a8b576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360205260409020600101546001600160a01b031690565b6000818060005411610af2576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60008381526003602052604081206005015460ff166002811115610b1257fe5b1415610b30576c57616974696e6750726f6f667360981b91506107c3565b600160008481526003602052604090206005015460ff166002811115610b5257fe5b1415610b70576c57616974696e675265706c617960981b91506107c3565b600260008481526003602052604090206005015460ff166002811115610b9257fe5b1415610bb1576d46696e69736865645265706c617960901b91506107c3565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b6000806000806000868060005411610c40576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b610c48611b9f565b6000898152600360208181526040808420815160c08101835281546001600160a01b039081168252600183015416818501526002820154818401529381015460608501526004810180548351818602810186019094528084529495919460808701949192909184015b82821015610d12576000848152602090819020604080516060810182529185015460ff81161515835261010081046001600160401b031683850152600160481b900460c01b6001600160c01b03191690820152825260019092019101610cb1565b50505090825250600582015460209091019060ff166002811115610d3257fe5b6002811115610d3d57fe5b815250509050806020015181604001518260600151836080015151610d618d610aab565b939d929c50909a509850909650945050505050565b808060005411610dbb576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020600101546001600160a01b0316338114610e25576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040812080546001019055839060008581526003602052604090206005015460ff166002811115610e5c57fe5b14610e985760405162461bcd60e51b815260040180806020018281038252603a815260200180611c57603a913960400191505060405180910390fd5b600084815260036020908152604091829020600501805460ff19166001179055815186815291517f0b1229d47b7ccd1dde07b4148a6c9336fd9d5fb57cca980e709576e96ae600ed9281900390910190a150505050565b60009081526001602052604090205460ff1690565b600080610f1360008585611b27565b90506000610f2360018686611b27565b90506000610f3360008787611b27565b9190920101949350505050565b60008054815260036020818152604080842080546001600160a01b038981166001600160a01b0319928316178355600183018054918a16919092161790556002810186905592830185905560058301805460ff191690558354815190815291820185905280517f9d7a7145d65060279d0bc06f7f03a791000bbaa9b8a8e75c3c10e2d24348791b9281900390910190a150506000805481526001602081905260408220805460ff19168217905581549081019091555b9392505050565b6000818060005411611044576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360208190526040909120015490565b60008180600054116110a3576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600261079f565b8480600054116110ef576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000868152600360205260409020600101546001600160a01b0316338114611159576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600087815260026020526040812080546001019055879060008981526003602052604090206005015460ff16600281111561119057fe5b146111cc5760405162461bcd60e51b8152600401808060200182810382526034815260200180611bff6034913960400191505060405180910390fd5b600360008981526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8989886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561126e578181015183820152602001611256565b5050505090500194505050505060206040518083038186803b15801561129357600080fd5b505af41580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b5051146112fb5760405162461bcd60e51b8152600401808060200182810382526024815260200180611c336024913960400191505060405180910390fd5b604051638492d93b60e01b81526001600160401b038816600482019081526001600160c01b03198716602483015260606044830190815286516064840152865173__$c7dbd794b8c7b5c2028db781007df1176e$__93638492d93b938c938b938b93608401906020808601910280838360005b8381101561138657818101518382015260200161136e565b5050505090500194505050505060206040518083038186803b1580156113ab57600080fd5b505af41580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b50516000898152600360208181526040808420928301949094558351606080820186528482526001600160401b03808e168385018181526001600160c01b03198e16858a0181815260049098018054600181018255908a52878a209651960180549251985160c01c600160481b0267ffffffffffffffff60481b19999095166101000268ffffffffffffffff001997151560ff19909416939093179690961691909117969096169190911790925585518e815292830194909452818501529182015290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a15050505050505050565b838060005411611512576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600101546001600160a01b031633811461157c576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600086815260026020526040812080546001019055869060008881526003602052604090206005015460ff1660028111156115b357fe5b146115ef5760405162461bcd60e51b8152600401808060200182810382526033815260200180611c916033913960400191505060405180910390fd5b600360008881526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8888886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611691578181015183820152602001611679565b5050505090500194505050505060206040518083038186803b1580156116b657600080fd5b505af41580156116ca573d6000803e3d6000fd5b505050506040513d60208110156116e057600080fd5b505114611734576040805162461bcd60e51b815260206004820152601b60248201527f4d65726b6c652070726f6f6620646f6573206e6f74206d617463680000000000604482015290519081900360640190fd5b600087815260036020908152604080832081516060808201845260018083526001600160401b03808e168488018181526001600160c01b03198f16868901818152600490980180548087018255908c529a8a9020965196909a0180549151975160c01c600160481b0267ffffffffffffffff60481b19989094166101000268ffffffffffffffff001997151560ff19909316929092179690961617959095161790925583518d8152948501919091528383019190915282019290925290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a150505050505050565b600081806000541161186c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b505060009081526003602052604090206002015490565b50506040805160008082526020820190815281830190925291565b60008380600054116118e5576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600501546119059060ff168585611b27565b95945050505050565b60008181526003602052604090206004018054606091829182919082816001600160401b038111801561194057600080fd5b5060405190808252806020026020018201604052801561196a578160200160208202803683370190505b5090506060826001600160401b038111801561198557600080fd5b506040519080825280602002602001820160405280156119af578160200160208202803683370190505b5090506060836001600160401b03811180156119ca57600080fd5b506040519080825280602002602001820160405280156119f4578160200160208202803683370190505b50905060005b84811015611af457858181548110611a0e57fe5b9060005260206000200160000160019054906101000a90046001600160401b0316848281518110611a3b57fe5b60200260200101906001600160401b031690816001600160401b031681525050858181548110611a6757fe5b9060005260206000200160000160099054906101000a900460c01b838281518110611a8e57fe5b60200260200101906001600160c01b03191690816001600160c01b03191681525050858181548110611abc57fe5b600091825260209091200154825160ff90911690839083908110611adc57fe5b911515602092830291909101909101526001016119fa565b5091989097509095509350505050565b6000908152600160209081526040808320805460ff191690556002909152812055565b600080846002811115611b3657fe5b1415611b485750600282028101610ff6565b6001846002811115611b5657fe5b1415611b63575081610ff6565b6002846002811115611b7157fe5b1415610bb1575081610ff6565b5080546000825590600052602060002090810190611b9c9190611bd1565b50565b6040805160c081018252600080825260208201819052918101829052606080820183905260808201529060a082015290565b5b80821115611bfa57805470ffffffffffffffffffffffffffffffffff19168155600101611bd2565b509056fe43757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f766557726974654d65726b6c652070726f6f66206f6620777269746520646f6573206e6f74206d6174636843757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742066696e69736850726f6f66506861736543757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f7665526561645374617465206f66204d4d2073686f756c642062652057616974696e675265706c6179496e646578206e6f7420696e7374616e74696174656400000000000000000000a264697066735822122022bd84b57df9b7cba5824423b88a08c264a777cf3f68b1afeaf8e7a092cb650864736f6c63430007040033",
  "linkReferences": {
    "@cartesi/util/contracts/Merkle.sol": {
      "Merkle": [
        {
          "length": 20,
          "start": 4617
        },
        {
          "length": 20,
          "start": 4961
        },
        {
          "length": 20,
          "start": 5676
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "@cartesi/util/contracts/Merkle.sol": {
      "Merkle": [
        {
          "length": 20,
          "start": 4581
        },
        {
          "length": 20,
          "start": 4925
        },
        {
          "length": 20,
          "start": 5640
        }
      ]
    }
  },
  "devdoc": {
    "kind": "dev",
    "methods": {
      "getMaxInstanceDuration(uint256,uint256)": {
        "params": {
          "_timeToStartMachine": "time to build the machine for the first time"
        }
      },
      "instantiate(address,address,bytes32)": {
        "params": {
          "_initialHash": "hash before divergence, in which both client and provider agree.",
          "_provider": "address that will provide memory values/proofs."
        },
        "returns": {
          "_0": "MemoryManager index."
        }
      },
      "proveWrite(uint256,uint64,bytes8,bytes8,bytes32[])": {
        "params": {
          "_newValue": "to be written",
          "_oldValue": "before write",
          "_position": "to be written",
          "proof": "The proof that the old value was correct"
        }
      }
    },
    "version": 1
  },
  "evm": {
    "bytecode": {
      "generatedSources": [],
      "linkReferences": {
        "@cartesi/util/contracts/Merkle.sol": {
          "Merkle": [
            {
              "length": 20,
              "start": 4617
            },
            {
              "length": 20,
              "start": 4961
            },
            {
              "length": 20,
              "start": 5676
            }
          ]
        }
      },
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3C DUP1 PUSH2 0x24 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82AFD23B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xA9C7A1E6 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA9C7A1E6 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xAC448B16 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0xADE5F417 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0xC526656C EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0xDB1DE419 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xF154F91D EQ PUSH2 0x636 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x82AFD23B EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0x84DFD44D EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x8A05E478 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x90645840 EQ PUSH2 0x356 JUMPI DUP1 PUSH4 0x96F429BA EQ PUSH2 0x373 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x43D4B78B GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x43D4B78B EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x52CC70C6 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x5748C130 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x73DF1612 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x7D036B0D EQ PUSH2 0x2C3 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x1FF62AB EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x1C5D3C60 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x26987B60 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x3D46B819 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x3ED5D456 EQ PUSH2 0x1D0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x875 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x229 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAAB JUMP JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xD76 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF40 JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFD JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x389 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x105C JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10AA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14CD SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x541 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x574 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5B8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DF JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x189E JUMP JUMPDEST PUSH2 0x653 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x190E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x69B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x683 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6C2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x719 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x701 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x79C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x7BF JUMPI INVALID JUMPDEST EQ SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x816 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x81F DUP2 PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x861 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x496E64657820696E616374697665 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x8BA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x921 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP3 PUSH2 0x940 DUP2 PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CC4 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x998 SWAP2 PUSH1 0x4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1B7E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE PUSH2 0x9BD DUP5 PUSH2 0x1B04 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEAC25E5C6B8F91FCAAEC2CBAED6317B8403630D1F793FC32C10FA4731A464E87 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xA3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xA8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xAF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB12 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB30 JUMPI PUSH13 0x57616974696E6750726F6F6673 PUSH1 0x98 SHL SWAP2 POP PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB52 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB70 JUMPI PUSH13 0x57616974696E675265706C6179 PUSH1 0x98 SHL SWAP2 POP PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB92 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xBB1 JUMPI PUSH14 0x46696E69736865645265706C6179 PUSH1 0x90 SHL SWAP2 POP PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x556E7265636F676E697A6564207374617465 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xC40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC48 PUSH2 0x1B9F JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xC0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD AND DUP2 DUP6 ADD MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP2 DUP5 ADD MSTORE SWAP4 DUP2 ADD SLOAD PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP5 SWAP6 SWAP2 SWAP5 PUSH1 0x80 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xD12 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP4 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x48 SHL SWAP1 DIV PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0xCB1 JUMP JUMPDEST POP POP POP SWAP1 DUP3 MSTORE POP PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD32 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD3D JUMPI INVALID JUMPDEST DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD MLOAD PUSH2 0xD61 DUP14 PUSH2 0xAAB JUMP JUMPDEST SWAP4 SWAP14 SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xDBB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0xE25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP4 SWAP1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE5C JUMPI INVALID JUMPDEST EQ PUSH2 0xE98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C57 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xB1229D47B7CCD1DDE07B4148A6C9336FD9D5FB57CCA980E709576E96AE600ED SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF13 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1B27 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF23 PUSH1 0x1 DUP7 DUP7 PUSH2 0x1B27 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF33 PUSH1 0x0 DUP8 DUP8 PUSH2 0x1B27 JUMP JUMPDEST SWAP2 SWAP1 SWAP3 ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP11 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP7 SWAP1 SSTORE SWAP3 DUP4 ADD DUP6 SWAP1 SSTORE PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP4 SLOAD DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD PUSH32 0x9D7A7145D65060279D0BC06F7F03A791000BBAA9B8A8E75C3C10E2D24348791B SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x0 DUP1 SLOAD DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 SSTORE DUP2 SLOAD SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x1044 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x10A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x79F JUMP JUMPDEST DUP5 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x10EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x1159 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP8 SWAP1 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1190 JUMPI INVALID JUMPDEST EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH20 0x0 PUSH4 0x8492D93B DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1256 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x12A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x12FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C33 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8492D93B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 AND PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x44 DUP4 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0x64 DUP5 ADD MSTORE DUP7 MLOAD PUSH20 0x0 SWAP4 PUSH4 0x8492D93B SWAP4 DUP13 SWAP4 DUP12 SWAP4 DUP12 SWAP4 PUSH1 0x84 ADD SWAP1 PUSH1 0x20 DUP1 DUP7 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1386 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x136E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP4 ADD SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP7 MSTORE DUP5 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP15 AND DUP4 DUP6 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP15 AND DUP6 DUP11 ADD DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP9 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP11 MSTORE DUP8 DUP11 KECCAK256 SWAP7 MLOAD SWAP7 ADD DUP1 SLOAD SWAP3 MLOAD SWAP9 MLOAD PUSH1 0xC0 SHR PUSH1 0x1 PUSH1 0x48 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x48 SHL NOT SWAP10 SWAP1 SWAP6 AND PUSH2 0x100 MUL PUSH9 0xFFFFFFFFFFFFFFFF00 NOT SWAP8 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP7 SWAP1 SWAP7 AND SWAP2 SWAP1 SWAP2 OR SWAP7 SWAP1 SWAP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE DUP6 MLOAD DUP15 DUP2 MSTORE SWAP3 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP2 DUP6 ADD MSTORE SWAP2 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x912A59309F29407977C171115122B2599E36BE67312D6366767F7DBEB3D831CE SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP4 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x1512 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x157C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 SWAP1 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x15B3 JUMPI INVALID JUMPDEST EQ PUSH2 0x15EF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C91 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH20 0x0 PUSH4 0x8492D93B DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1691 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1679 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x16CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x1734 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D65726B6C652070726F6F6620646F6573206E6F74206D617463680000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP5 MSTORE PUSH1 0x1 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP15 AND DUP5 DUP9 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP16 AND DUP7 DUP10 ADD DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP9 ADD DUP1 SLOAD DUP1 DUP8 ADD DUP3 SSTORE SWAP1 DUP13 MSTORE SWAP11 DUP11 SWAP1 KECCAK256 SWAP7 MLOAD SWAP7 SWAP1 SWAP11 ADD DUP1 SLOAD SWAP2 MLOAD SWAP8 MLOAD PUSH1 0xC0 SHR PUSH1 0x1 PUSH1 0x48 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x48 SHL NOT SWAP9 SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH9 0xFFFFFFFFFFFFFFFF00 NOT SWAP8 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP7 SWAP1 SWAP7 AND OR SWAP6 SWAP1 SWAP6 AND OR SWAP1 SWAP3 SSTORE DUP4 MLOAD DUP14 DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH32 0x912A59309F29407977C171115122B2599E36BE67312D6366767F7DBEB3D831CE SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x186C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x18E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH2 0x1905 SWAP1 PUSH1 0xFF AND DUP6 DUP6 PUSH2 0x1B27 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 DUP3 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x196A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19AF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x19CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19F4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1AF4 JUMPI DUP6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1A0E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A3B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE POP POP DUP6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1A67 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x9 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xC0 SHL DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE POP POP DUP6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1ABC JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP3 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1ADC JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19FA JUMP JUMPDEST POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B36 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1B48 JUMPI POP PUSH1 0x2 DUP3 MUL DUP2 ADD PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B56 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1B63 JUMPI POP DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x2 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B71 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xBB1 JUMPI POP DUP2 PUSH2 0xFF6 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1B9C SWAP2 SWAP1 PUSH2 0x1BD1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE SWAP1 PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1BFA JUMPI DUP1 SLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1BD2 JUMP JUMPDEST POP SWAP1 JUMP INVALID NUMBER PUSH22 0x7272656E745374617465206973206E6F742057616974 PUSH10 0x6E6750726F6F66732C20 PUSH4 0x616E6E6F PUSH21 0x2070726F766557726974654D65726B6C652070726F PUSH16 0x66206F6620777269746520646F657320 PUSH15 0x6F74206D6174636843757272656E74 MSTORE8 PUSH21 0x617465206973206E6F742057616974696E6750726F PUSH16 0x66732C2063616E6E6F742066696E6973 PUSH9 0x50726F6F6650686173 PUSH6 0x43757272656E PUSH21 0x5374617465206973206E6F742057616974696E6750 PUSH19 0x6F6F66732C2063616E6E6F742070726F766552 PUSH6 0x616453746174 PUSH6 0x206F66204D4D KECCAK256 PUSH20 0x686F756C642062652057616974696E675265706C PUSH2 0x7949 PUSH15 0x646578206E6F7420696E7374616E74 PUSH10 0x61746564000000000000 STOP STOP STOP STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0xBD DUP5 0xB5 PUSH30 0xF9B7CBA5824423B88A08C264A777CF3F68B1AFEAF8E7A092CB650864736F PUSH13 0x63430007040033000000000000 ",
      "sourceMap": "1462:12019:6:-:0;;;759:1:2;729:31;;1462:12019:6;;;;;;;;;;;;;;;;"
    },
    "deployedBytecode": {
      "generatedSources": [],
      "immutableReferences": {},
      "linkReferences": {
        "@cartesi/util/contracts/Merkle.sol": {
          "Merkle": [
            {
              "length": 20,
              "start": 4581
            },
            {
              "length": 20,
              "start": 4925
            },
            {
              "length": 20,
              "start": 5640
            }
          ]
        }
      },
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82AFD23B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xA9C7A1E6 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA9C7A1E6 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xAC448B16 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0xADE5F417 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0xC526656C EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0xDB1DE419 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xF154F91D EQ PUSH2 0x636 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x82AFD23B EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0x84DFD44D EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x8A05E478 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x90645840 EQ PUSH2 0x356 JUMPI DUP1 PUSH4 0x96F429BA EQ PUSH2 0x373 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x43D4B78B GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x43D4B78B EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x52CC70C6 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x5748C130 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x73DF1612 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x7D036B0D EQ PUSH2 0x2C3 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x1FF62AB EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x1C5D3C60 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x26987B60 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x3D46B819 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x3ED5D456 EQ PUSH2 0x1D0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x875 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x229 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAAB JUMP JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xD76 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF40 JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFD JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x389 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x105C JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10AA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14CD SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x541 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x574 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5B8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DF JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x189E JUMP JUMPDEST PUSH2 0x653 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x190E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x69B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x683 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6DA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6C2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x719 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x701 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x79C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x7BF JUMPI INVALID JUMPDEST EQ SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x816 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x81F DUP2 PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x861 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x496E64657820696E616374697665 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x8BA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x921 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP3 PUSH2 0x940 DUP2 PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CC4 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x998 SWAP2 PUSH1 0x4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1B7E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE PUSH2 0x9BD DUP5 PUSH2 0x1B04 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEAC25E5C6B8F91FCAAEC2CBAED6317B8403630D1F793FC32C10FA4731A464E87 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xA3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xA8B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xAF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB12 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB30 JUMPI PUSH13 0x57616974696E6750726F6F6673 PUSH1 0x98 SHL SWAP2 POP PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB52 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB70 JUMPI PUSH13 0x57616974696E675265706C6179 PUSH1 0x98 SHL SWAP2 POP PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB92 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xBB1 JUMPI PUSH14 0x46696E69736865645265706C6179 PUSH1 0x90 SHL SWAP2 POP PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x556E7265636F676E697A6564207374617465 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xC40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC48 PUSH2 0x1B9F JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xC0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD AND DUP2 DUP6 ADD MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP2 DUP5 ADD MSTORE SWAP4 DUP2 ADD SLOAD PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP5 SWAP6 SWAP2 SWAP5 PUSH1 0x80 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xD12 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP4 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x48 SHL SWAP1 DIV PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0xCB1 JUMP JUMPDEST POP POP POP SWAP1 DUP3 MSTORE POP PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD32 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD3D JUMPI INVALID JUMPDEST DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD MLOAD PUSH2 0xD61 DUP14 PUSH2 0xAAB JUMP JUMPDEST SWAP4 SWAP14 SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0xDBB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0xE25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP4 SWAP1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE5C JUMPI INVALID JUMPDEST EQ PUSH2 0xE98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C57 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xB1229D47B7CCD1DDE07B4148A6C9336FD9D5FB57CCA980E709576E96AE600ED SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF13 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1B27 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF23 PUSH1 0x1 DUP7 DUP7 PUSH2 0x1B27 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF33 PUSH1 0x0 DUP8 DUP8 PUSH2 0x1B27 JUMP JUMPDEST SWAP2 SWAP1 SWAP3 ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP11 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP7 SWAP1 SSTORE SWAP3 DUP4 ADD DUP6 SWAP1 SSTORE PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP4 SLOAD DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD PUSH32 0x9D7A7145D65060279D0BC06F7F03A791000BBAA9B8A8E75C3C10E2D24348791B SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP PUSH1 0x0 DUP1 SLOAD DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 SSTORE DUP2 SLOAD SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x1044 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x10A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x79F JUMP JUMPDEST DUP5 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x10EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x1159 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP8 SWAP1 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1190 JUMPI INVALID JUMPDEST EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH20 0x0 PUSH4 0x8492D93B DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1256 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x12A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x12FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C33 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8492D93B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 AND PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x44 DUP4 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0x64 DUP5 ADD MSTORE DUP7 MLOAD PUSH20 0x0 SWAP4 PUSH4 0x8492D93B SWAP4 DUP13 SWAP4 DUP12 SWAP4 DUP12 SWAP4 PUSH1 0x84 ADD SWAP1 PUSH1 0x20 DUP1 DUP7 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1386 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x136E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP4 ADD SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP7 MSTORE DUP5 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP15 AND DUP4 DUP6 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP15 AND DUP6 DUP11 ADD DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP9 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP11 MSTORE DUP8 DUP11 KECCAK256 SWAP7 MLOAD SWAP7 ADD DUP1 SLOAD SWAP3 MLOAD SWAP9 MLOAD PUSH1 0xC0 SHR PUSH1 0x1 PUSH1 0x48 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x48 SHL NOT SWAP10 SWAP1 SWAP6 AND PUSH2 0x100 MUL PUSH9 0xFFFFFFFFFFFFFFFF00 NOT SWAP8 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP7 SWAP1 SWAP7 AND SWAP2 SWAP1 SWAP2 OR SWAP7 SWAP1 SWAP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE DUP6 MLOAD DUP15 DUP2 MSTORE SWAP3 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP2 DUP6 ADD MSTORE SWAP2 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x912A59309F29407977C171115122B2599E36BE67312D6366767F7DBEB3D831CE SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP4 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x1512 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x157C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x21B0B73737BA1031329031B0B63632B210313C903AB9B2B9 PUSH1 0x41 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 SWAP1 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x15B3 JUMPI INVALID JUMPDEST EQ PUSH2 0x15EF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C91 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH20 0x0 PUSH4 0x8492D93B DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1691 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1679 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x16CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x1734 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D65726B6C652070726F6F6620646F6573206E6F74206D617463680000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP5 MSTORE PUSH1 0x1 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP15 AND DUP5 DUP9 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP16 AND DUP7 DUP10 ADD DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP9 ADD DUP1 SLOAD DUP1 DUP8 ADD DUP3 SSTORE SWAP1 DUP13 MSTORE SWAP11 DUP11 SWAP1 KECCAK256 SWAP7 MLOAD SWAP7 SWAP1 SWAP11 ADD DUP1 SLOAD SWAP2 MLOAD SWAP8 MLOAD PUSH1 0xC0 SHR PUSH1 0x1 PUSH1 0x48 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x48 SHL NOT SWAP9 SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH9 0xFFFFFFFFFFFFFFFF00 NOT SWAP8 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP7 SWAP1 SWAP7 AND OR SWAP6 SWAP1 SWAP6 AND OR SWAP1 SWAP3 SSTORE DUP4 MLOAD DUP14 DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH32 0x912A59309F29407977C171115122B2599E36BE67312D6366767F7DBEB3D831CE SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x186C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 PUSH1 0x0 SLOAD GT PUSH2 0x18E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1CE7 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH2 0x1905 SWAP1 PUSH1 0xFF AND DUP6 DUP6 PUSH2 0x1B27 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 DUP3 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x196A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19AF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x19CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19F4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1AF4 JUMPI DUP6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1A0E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A3B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE POP POP DUP6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1A67 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x9 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xC0 SHL DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE POP POP DUP6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1ABC JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP3 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1ADC JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19FA JUMP JUMPDEST POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B36 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1B48 JUMPI POP PUSH1 0x2 DUP3 MUL DUP2 ADD PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B56 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1B63 JUMPI POP DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x2 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B71 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xBB1 JUMPI POP DUP2 PUSH2 0xFF6 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1B9C SWAP2 SWAP1 PUSH2 0x1BD1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE SWAP1 PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1BFA JUMPI DUP1 SLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1BD2 JUMP JUMPDEST POP SWAP1 JUMP INVALID NUMBER PUSH22 0x7272656E745374617465206973206E6F742057616974 PUSH10 0x6E6750726F6F66732C20 PUSH4 0x616E6E6F PUSH21 0x2070726F766557726974654D65726B6C652070726F PUSH16 0x66206F6620777269746520646F657320 PUSH15 0x6F74206D6174636843757272656E74 MSTORE8 PUSH21 0x617465206973206E6F742057616974696E6750726F PUSH16 0x66732C2063616E6E6F742066696E6973 PUSH9 0x50726F6F6650686173 PUSH6 0x43757272656E PUSH21 0x5374617465206973206E6F742057616974696E6750 PUSH19 0x6F6F66732C2063616E6E6F742070726F766552 PUSH6 0x616453746174 PUSH6 0x206F66204D4D KECCAK256 PUSH20 0x686F756C642062652057616974696E675265706C PUSH2 0x7949 PUSH15 0x646578206E6F7420696E7374616E74 PUSH10 0x61746564000000000000 STOP STOP STOP STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0xBD DUP5 0xB5 PUSH30 0xF9B7CBA5824423B88A08C264A777CF3F68B1AFEAF8E7A092CB650864736F PUSH13 0x63430007040033000000000000 ",
      "sourceMap": "1462:12019:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7960:182;;;;;;;;;;;;;;;;-1:-1:-1;7960:182:6;;;;;;-1:-1:-1;;;;;7960:182:6;;:::i;:::-;;;;;;;;;;;;;;;;;;12784:227;;;;;;;;;;;;;;;;-1:-1:-1;12784:227:6;;:::i;729:31:2:-;;;:::i;:::-;;;;;;;;;;;;;;;;1405:186;;;;;;;;;;;;;;;;-1:-1:-1;1405:186:2;;:::i;6821:446:6:-;;;;;;;;;;;;;;;;-1:-1:-1;6821:446:6;;:::i;:::-;;13017:227;;;;;;;;;;;;;;;;-1:-1:-1;13017:227:6;;:::i;8951:174::-;;;;;;;;;;;;;;;;-1:-1:-1;8951:174:6;;:::i;:::-;;;;-1:-1:-1;;;;;8951:174:6;;;;;;;;;;;;;;9534:546;;;;;;;;;;;;;;;;-1:-1:-1;9534:546:6;;:::i;8148:522::-;;;;;;;;;;;;;;;;-1:-1:-1;8148:522:6;;;;;;-1:-1:-1;;;;;8148:522:6;;:::i;:::-;;;;-1:-1:-1;;;;;8148:522:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6316:456;;;;;;;;;;;;;;;;-1:-1:-1;6316:456:6;;:::i;1289:110:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1289:110:2;;:::i;11948:771:6:-;;;;;;;;;;;;;;;;-1:-1:-1;11948:771:6;;;;;;;:::i;3509:584::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3509:584:6;;;;;;;;;;;;;;;;;:::i;9317:189::-;;;;;;;;;;;;;;;;-1:-1:-1;9317:189:6;;:::i;13250:229::-;;;;;;;;;;;;;;;;-1:-1:-1;13250:229:6;;:::i;5327:914::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5327:914:6;;;;;;-1:-1:-1;;;;;;5327:914:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5327:914:6;;-1:-1:-1;5327:914:6;;-1:-1:-1;;;;;5327:914:6:i;4357:724::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4357:724:6;;;;;;-1:-1:-1;;;;;;4357:724:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4357:724:6;;-1:-1:-1;4357:724:6;;-1:-1:-1;;;;;4357:724:6:i;9131:180::-;;;;;;;;;;;;;;;;-1:-1:-1;9131:180:6;;:::i;8676:269::-;;;;;;;;;;;;;;;;-1:-1:-1;8676:269:6;;;;;;-1:-1:-1;;;;;8676:269:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11250:391;;;;;;;;;;;;;;;;-1:-1:-1;11250:391:6;;;;;;;;;;;;:::i;7295:659::-;;;;;;;;;;;;;;;;-1:-1:-1;7295:659:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7960:182;8074:4;8101:16;;;:8;:16;;;;;;:25;;;-1:-1:-1;;;;;8101:34:6;;;:25;;:34;;7960:182::o;12784:227::-;12925:4;12900:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;12985:19:6::1;12952:52;:16;::::0;;;:8:::1;:16;::::0;;;;:29:::1;;::::0;::::1;;:52;::::0;::::1;;;;;;;12945:59;;989:1:2;12784:227:6::0;;;;:::o;729:31:2:-;;;;:::o;1405:186::-;1528:20;1503:6;1081;1066:12;;:21;1058:56;;;;;-1:-1:-1;;;1058:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1058:56:2;;;;;;;;;;;;;;;1132:16;1141:6;1132:8;:16::i;:::-;1124:43;;;;;-1:-1:-1;;;1124:43:2;;;;;;;;;;;;-1:-1:-1;;;1124:43:2;;;;;;;;;;;;;;;-1:-1:-1;;1571:13:2::1;::::0;;;:5:::1;:13;::::0;;;;;;1405:186::o;6821:446:6:-;6921:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;6944:16:6::1;::::0;;;:8:::1;:16;::::0;;;;:22;-1:-1:-1;;;;;6944:22:6::1;834:10:0;:18:::0;::::1;826:55;;;::::0;;-1:-1:-1;;;826:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;826:55:0;;;;;;;;;;;;;::::1;;1250:13:2::2;::::0;;;:5:::2;:13;::::0;;;;:15;;::::2;;::::0;;6991:6:6;7021:28:::3;6991:6:::0;7021:20:::3;:28::i;:::-;7013:76;;;;-1:-1:-1::0;;;7013:76:6::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7107:16;::::0;;;:8:::3;:16;::::0;;;;7099:33:::3;::::0;7107:24:::3;::::0;;::::3;::::0;7099:33:::3;:::i;:::-;7142:16;::::0;;;:8:::3;:16;::::0;;;;:29:::3;;:52:::0;;-1:-1:-1;;7142:52:6::3;7174:20;7142:52;::::0;;7205:18:::3;7142:16:::0;7205:10:::3;:18::i;:::-;7238:22;::::0;;;;;;;::::3;::::0;;;;::::3;::::0;;::::3;891:1:0::2;989::2::1;6821:446:6::0;;:::o;13017:227::-;13158:4;13133:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;13218:19:6::1;13185:52;::::0;8951:174;9063:7;9038:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;-1:-1:-1;;9093:16:6::1;::::0;;;:8:::1;:16;::::0;;;;:25:::1;;::::0;-1:-1:-1;;;;;9093:25:6::1;::::0;8951:174::o;9534:546::-;9670:7;9645:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;9730:19:6::1;9697:16:::0;;;:8:::1;:16;::::0;;;;:29:::1;;::::0;::::1;;:52;::::0;::::1;;;;;;;9693:105;;;-1:-1:-1::0;;;9765:22:6::1;;;;9693:105;9844:19;9811:16;::::0;;;:8:::1;:16;::::0;;;;:29:::1;;::::0;::::1;;:52;::::0;::::1;;;;;;;9807:105;;;-1:-1:-1::0;;;9879:22:6::1;;;;9807:105;9958:20;9925:16;::::0;;;:8:::1;:16;::::0;;;;:29:::1;;::::0;::::1;;:53;::::0;::::1;;;;;;;9921:107;;;-1:-1:-1::0;;;9994:23:6::1;;;;9921:107;10037:36;::::0;;-1:-1:-1;;;10037:36:6;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10037:36:6;;;;;;;;;;;;;::::1;8148:522:::0;8282:17;8313:20;8347:16;8377:24;8415:21;8244:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;8461:14:6::1;;:::i;:::-;8478:16;::::0;;;:8:::1;:16;::::0;;;;;;;8461:33;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;8461:33:6;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;;;;8478:16;;8461:33;;;;;;;;;::::1;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;;;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;8461:33:6::1;::::0;;::::1;::::0;-1:-1:-1;;;8461:33:6;::::1;;;-1:-1:-1::0;;;;;;8461:33:6::1;::::0;;;;;;;;;::::1;::::0;::::1;;;;-1:-1:-1::0;;;8461:33:6;;;-1:-1:-1;8461:33:6::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;8526:1;:10;;;8550:1;:13;;;8577:1;:9;;;8600:1;:9;;;:16;8630:23;8646:6;8630:15;:23::i;:::-;8505:158:::0;;;;-1:-1:-1;8505:158:6;;-1:-1:-1;8505:158:6;-1:-1:-1;8505:158:6;;-1:-1:-1;8148:522:6;-1:-1:-1;;;;;8148:522:6:o;6316:456::-;6415:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;6438:16:6::1;::::0;;;:8:::1;:16;::::0;;;;:25:::1;;::::0;-1:-1:-1;;;;;6438:25:6::1;834:10:0;:18:::0;::::1;826:55;;;::::0;;-1:-1:-1;;;826:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;826:55:0;;;;;;;;;;;;;::::1;;1250:13:2::2;::::0;;;:5:::2;:13;::::0;;;;:15;;::::2;;::::0;;6488:6:6;;6531:16:::3;::::0;;;:8:::3;:16;::::0;;;;:29:::3;;::::0;::::3;;:52;::::0;::::3;;;;;;;6510:157;;;;-1:-1:-1::0;;;6510:157:6::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6677:16;::::0;;;:8:::3;:16;::::0;;;;;;;;:29:::3;;:51:::0;;-1:-1:-1;;6677:51:6::3;6709:19;6677:51;::::0;;6743:22;;;;;;;::::3;::::0;;;;;;;;::::3;891:1:0::2;989::2::1;6316:456:6::0;;:::o;1289:110:2:-;1353:4;1377:14;;;:6;:14;;;;;;;;;1289:110::o;11948:771:6:-;12085:7;12104:29;12136:123;12169:19;12202:14;12230:19;12136;:123::i;:::-;12104:155;;12270:29;12302:123;12335:19;12368:14;12396:19;12302;:123::i;:::-;12270:155;;12436:28;12467:123;12500:19;12533:14;12561:19;12467;:123::i;:::-;12620:57;;;;:92;;11948:771;-1:-1:-1;;;;11948:771:6:o;3509:584::-;3642:7;3702:12;;3693:22;;:8;:22;;;;;;;;3725:30;;-1:-1:-1;;;;;3725:30:6;;;-1:-1:-1;;;;;;3725:30:6;;;;;;-1:-1:-1;3765:24:6;;:36;;;;;;;;;;;;3811:27;;;:42;;;3863:23;;;:38;;;3911:28;;;:50;;-1:-1:-1;;3911:50:6;;;3990:12;;3976:41;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4028:20:6;4035:12;;4028:20;;4051:4;4028:20;;;;;;;:27;;-1:-1:-1;;4028:27:6;;;;;4072:14;;;;;;;;3509:584;;;;;;:::o;9317:189::-;9445:7;9420:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;-1:-1:-1;;9475:16:6::1;::::0;;;:8:::1;:16;::::0;;;;;;;:24:::1;::::0;;9317:189::o;13250:229::-;13392:4;13367:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;13452:20:6::1;13419:53;::::0;5327:914;5527:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;5550:16:6::1;::::0;;;:8:::1;:16;::::0;;;;:25:::1;;::::0;-1:-1:-1;;;;;5550:25:6::1;834:10:0;:18:::0;::::1;826:55;;;::::0;;-1:-1:-1;;;826:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;826:55:0;;;;;;;;;;;;;::::1;;1250:13:2::2;::::0;;;:5:::2;:13;::::0;;;;:15;;::::2;;::::0;;5600:6:6;;5643:16:::3;::::0;;;:8:::3;:16;::::0;;;;:29:::3;;::::0;::::3;;:52;::::0;::::3;;;;;;;5622:151;;;;-1:-1:-1::0;;;5622:151:6::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5903:8;:16;5912:6;5903:16;;;;;;;;;;;:24;;;5840:6;:14;5855:9;5866;5877:5;5840:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;5840:43:6::3;;;;;;-1:-1:-1::0;;;;;5840:43:6::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;5840:43:6;:87:::3;5819:170;;;;-1:-1:-1::0;;;5819:170:6::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6049:43;::::0;-1:-1:-1;;;6049:43:6;;-1:-1:-1;;;;;6049:43:6;::::3;;::::0;::::3;::::0;;;-1:-1:-1;;;;;;6049:43:6;::::3;::::0;;;;;;;;;;;;;;;;;;;:6:::3;::::0;:14:::3;::::0;6064:9;;6075;;6086:5;;6049:43;;;::::3;::::0;;::::3;::::0;::::3;::::0;;;-1:-1:-1;6049:43:6::3;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;6049:43:6;6022:16:::3;::::0;;;:8:::3;6049:43;6022:16:::0;;;;;;;:24;;::::3;:70:::0;;;;6132:38;;::::3;::::0;;::::3;::::0;;;;;-1:-1:-1;;;;;6132:38:6;;::::3;::::0;;::::3;::::0;;;-1:-1:-1;;;;;;6132:38:6;::::3;::::0;;;;;;6102:24:::3;::::0;;::::3;:69:::0;;6132:38;6102:69;::::3;::::0;;;;;;;;;;;::::3;::::0;;;;;;::::3;;-1:-1:-1::0;;;6102:69:6::3;-1:-1:-1::0;;;;6102:69:6;;;::::3;;;-1:-1:-1::0;;6102:69:6;::::3;;-1:-1:-1::0;;6102:69:6;;::::3;::::0;;;::::3;::::0;;;::::3;::::0;;;::::3;::::0;;;::::3;::::0;;;::::3;::::0;;;6186:48;;;;;;;::::3;::::0;;;;;;;;;;;;;;::::3;::::0;;;;;;;::::3;891:1:0::2;989::2::1;5327:914:6::0;;;;;;:::o;4357:724::-;4527:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;4550:16:6::1;::::0;;;:8:::1;:16;::::0;;;;:25:::1;;::::0;-1:-1:-1;;;;;4550:25:6::1;834:10:0;:18:::0;::::1;826:55;;;::::0;;-1:-1:-1;;;826:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;826:55:0;;;;;;;;;;;;;::::1;;1250:13:2::2;::::0;;;:5:::2;:13;::::0;;;;:15;;::::2;;::::0;;4600:6:6;;4643:16:::3;::::0;;;:8:::3;:16;::::0;;;;:29:::3;;::::0;::::3;;:52;::::0;::::3;;;;;;;4622:150;;;;-1:-1:-1::0;;;4622:150:6::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4863:8;:16;4872:6;4863:16;;;;;;;;;;;:24;;;4803:6;:14;4818:9;4829:6;4837:5;4803:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;4803:40:6::3;;;;;;-1:-1:-1::0;;;;;4803:40:6::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;4803:40:6;:84:::3;4782:158;;;::::0;;-1:-1:-1;;;4782:158:6;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;::::3;::::0;;;;;;;;;;;;;::::3;;4950:16;::::0;;;:8:::3;:16;::::0;;;;;;;4980:34;;::::3;::::0;;::::3;::::0;;4990:4:::3;4980:34:::0;;;-1:-1:-1;;;;;4980:34:6;;::::3;::::0;;::::3;::::0;;;-1:-1:-1;;;;;;4980:34:6;::::3;::::0;;;;;;4950:24:::3;::::0;;::::3;:65:::0;;;;::::3;::::0;;;;;;;;;;;;;;::::3;::::0;;;;;;::::3;;-1:-1:-1::0;;;4950:65:6::3;-1:-1:-1::0;;;;4950:65:6;;;::::3;;;-1:-1:-1::0;;4950:65:6;::::3;;-1:-1:-1::0;;4950:65:6;;::::3;::::0;;;::::3;::::0;;;::::3;;::::0;;;::::3;;::::0;;;5030:44;;;;;;;::::3;::::0;;;;;;;;;;;;;;;;;;;::::3;::::0;;;;;;;::::3;891:1:0::2;989::2::1;4357:724:6::0;;;;;:::o;9131:180::-;9246:7;9221:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;-1:-1:-1;;9276:16:6::1;::::0;;;:8:::1;:16;::::0;;;;:28:::1;;::::0;;9131:180::o;8676:269::-;-1:-1:-1;;8852:16:6;;;8866:1;8852:16;;;;;;8899;;;;;;;;;8852;8676:269::o;11250:391::-;11471:7;11446:6;946::2;931:12;;:21;923:56;;;;;-1:-1:-1;;;923:56:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;923:56:2;;;;;;;;;;;;;;;11534:16:6::1;::::0;;;:8:::1;:16;::::0;;;;:29:::1;;::::0;11501:133:::1;::::0;11534:29:::1;;11577:14:::0;11605:19;11501::::1;:133::i;:::-;11494:140:::0;11250:391;-1:-1:-1;;;;;11250:391:6:o;7295:659::-;7471:23;7497:16;;;:8;:16;;;;;:24;;7548:10;;7387:15;;;;;;7497:24;7387:15;7548:10;-1:-1:-1;;;;;7596:20:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7596:20:6;;7568:48;;7626:22;7664:6;-1:-1:-1;;;;;7651:20:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7651:20:6;;7626:45;;7681:20;7715:6;-1:-1:-1;;;;;7704:18:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7704:18:6;;7681:41;;7738:9;7733:170;7757:6;7753:1;:10;7733:170;;;7799:3;7803:1;7799:6;;;;;;;;;;;;;;;:15;;;;;;;;;;-1:-1:-1;;;;;7799:15:6;7784:9;7794:1;7784:12;;;;;;;;;;;;;:30;-1:-1:-1;;;;;7784:30:6;;;-1:-1:-1;;;;;7784:30:6;;;;;7840:3;7844:1;7840:6;;;;;;;;;;;;;;;:12;;;;;;;;;;;;7828:6;7835:1;7828:9;;;;;;;;;;;;;:24;-1:-1:-1;;;;;7828:24:6;;;;-1:-1:-1;;;;;7828:24:6;;;;;;7878:3;7882:1;7878:6;;;;;;;;;;;;;;;;;:14;7866:9;;7878:14;;;;;7866:6;;7873:1;;7866:9;;;;;;:26;;;:9;;;;;;;;;;;:26;7765:3;;7733:170;;;-1:-1:-1;7921:9:6;;7932:6;;-1:-1:-1;7921:9:6;;-1:-1:-1;7295:659:6;-1:-1:-1;;;;7295:659:6:o;1597:111:2:-;1669:5;1652:14;;;:6;:14;;;;;;;;:22;;-1:-1:-1;;1652:22:2;;;1684:5;:13;;;;;:17;1597:111::o;10375:869:6:-;10523:7;;10546:6;:29;;;;;;;;;10542:339;;;-1:-1:-1;10851:1:6;10843:27;;10821:49;;10814:56;;10542:339;10904:19;10894:6;:29;;;;;;;;;10890:150;;;-1:-1:-1;11015:14:6;11008:21;;10890:150;11063:20;11053:6;:30;;;;;;;;;11049:142;;;-1:-1:-1;11166:14:6;11159:21;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o"
    },
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "1496800",
        "executionCost": "6567",
        "totalCost": "1503367"
      },
      "external": {
        "currentIndex()": "1066",
        "finishProofPhase(uint256)": "infinite",
        "finishReplayPhase(uint256)": "infinite",
        "getCurrentState(uint256)": "infinite",
        "getCurrentStateDeadline(uint256,uint256,uint256)": "infinite",
        "getMaxInstanceDuration(uint256,uint256)": "infinite",
        "getNonce(uint256)": "infinite",
        "getRWArrays(uint256)": "infinite",
        "getState(uint256,address)": "infinite",
        "getSubInstances(uint256,address)": "700",
        "initialHash(uint256)": "infinite",
        "instantiate(address,address,bytes32)": "148457",
        "isActive(uint256)": "1141",
        "isConcerned(uint256,address)": "1211",
        "newHash(uint256)": "infinite",
        "proveRead(uint256,uint64,bytes8,bytes32[])": "infinite",
        "proveWrite(uint256,uint64,bytes8,bytes8,bytes32[])": "infinite",
        "provider(uint256)": "infinite",
        "stateIsFinishedReplay(uint256)": "infinite",
        "stateIsWaitingProofs(uint256)": "infinite",
        "stateIsWaitingReplay(uint256)": "infinite"
      },
      "internal": {
        "getMaxStateDuration(enum MMInterface.state,uint256,uint256)": "infinite"
      }
    },
    "methodIdentifiers": {
      "currentIndex()": "26987b60",
      "finishProofPhase(uint256)": "7d036b0d",
      "finishReplayPhase(uint256)": "3ed5d456",
      "getCurrentState(uint256)": "5748c130",
      "getCurrentStateDeadline(uint256,uint256,uint256)": "db1de419",
      "getMaxInstanceDuration(uint256,uint256)": "84dfd44d",
      "getNonce(uint256)": "3d46b819",
      "getRWArrays(uint256)": "f154f91d",
      "getState(uint256,address)": "73df1612",
      "getSubInstances(uint256,address)": "c526656c",
      "initialHash(uint256)": "ade5f417",
      "instantiate(address,address,bytes32)": "8a05e478",
      "isActive(uint256)": "82afd23b",
      "isConcerned(uint256,address)": "01ff62ab",
      "newHash(uint256)": "90645840",
      "proveRead(uint256,uint64,bytes8,bytes32[])": "ac448b16",
      "proveWrite(uint256,uint64,bytes8,bytes8,bytes32[])": "a9c7a1e6",
      "provider(uint256)": "52cc70c6",
      "stateIsFinishedReplay(uint256)": "96f429ba",
      "stateIsWaitingProofs(uint256)": "1c5d3c60",
      "stateIsWaitingReplay(uint256)": "43d4b78b"
    }
  },
  "metadata": "{\"compiler\":{\"version\":\"0.7.4+commit.3f05b770\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"FinishedProofs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"FinishedReplay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_initialHash\",\"type\":\"bytes32\"}],\"name\":\"MemoryCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_wasRead\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"_position\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes8\",\"name\":\"_value\",\"type\":\"bytes8\"}],\"name\":\"ValueProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"_position\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes8\",\"name\":\"_value\",\"type\":\"bytes8\"}],\"name\":\"ValueRead\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"_position\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes8\",\"name\":\"_value\",\"type\":\"bytes8\"}],\"name\":\"ValueWritten\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"currentIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"finishProofPhase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"finishReplayPhase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getCurrentState\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_roundDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeToStartMachine\",\"type\":\"uint256\"}],\"name\":\"getCurrentStateDeadline\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_roundDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeToStartMachine\",\"type\":\"uint256\"}],\"name\":\"getMaxInstanceDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getRWArrays\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes8[]\",\"name\":\"\",\"type\":\"bytes8[]\"},{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_provider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_initialHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_newHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_numberSubmitted\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_currentState\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getSubInstances\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"initialHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_provider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_initialHash\",\"type\":\"bytes32\"}],\"name\":\"instantiate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"isActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"isConcerned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"newHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_position\",\"type\":\"uint64\"},{\"internalType\":\"bytes8\",\"name\":\"_value\",\"type\":\"bytes8\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"proveRead\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_position\",\"type\":\"uint64\"},{\"internalType\":\"bytes8\",\"name\":\"_oldValue\",\"type\":\"bytes8\"},{\"internalType\":\"bytes8\",\"name\":\"_newValue\",\"type\":\"bytes8\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"proveWrite\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"provider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"stateIsFinishedReplay\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"stateIsWaitingProofs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"stateIsWaitingReplay\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getMaxInstanceDuration(uint256,uint256)\":{\"params\":{\"_timeToStartMachine\":\"time to build the machine for the first time\"}},\"instantiate(address,address,bytes32)\":{\"params\":{\"_initialHash\":\"hash before divergence, in which both client and provider agree.\",\"_provider\":\"address that will provide memory values/proofs.\"},\"returns\":{\"_0\":\"MemoryManager index.\"}},\"proveWrite(uint256,uint64,bytes8,bytes8,bytes32[])\":{\"params\":{\"_newValue\":\"to be written\",\"_oldValue\":\"before write\",\"_position\":\"to be written\",\"proof\":\"The proof that the old value was correct\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"finishProofPhase(uint256)\":{\"notice\":\"Stop memory insertion and start read and write phase\"},\"finishReplayPhase(uint256)\":{\"notice\":\"Stop write (or read) phase\"},\"instantiate(address,address,bytes32)\":{\"notice\":\"Instantiate a memory manager instance.\"},\"proveRead(uint256,uint64,bytes8,bytes32[])\":{\"notice\":\"Proves that a certain value in current memory is correct\"},\"proveWrite(uint256,uint64,bytes8,bytes8,bytes32[])\":{\"notice\":\"Register a write operation and update newHash\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MMInstantiator.sol\":\"MMInstantiator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@cartesi/util/contracts/Decorated.sol\":{\"content\":\"// Copyright 2020 Cartesi Pte. Ltd.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n// Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n// this file except in compliance with the License. You may obtain a copy of the\\n// License at http://www.apache.org/licenses/LICENSE-2.0\\n\\n// Unless required by applicable law or agreed to in writing, software distributed\\n// under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n// CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n// specific language governing permissions and limitations under the License.\\n\\npragma solidity ^0.7.0;\\n\\n\\ncontract Decorated {\\n    // This contract defines several modifiers but does not use\\n    // them - they will be used in derived contracts.\\n    modifier onlyBy(address user) {\\n        require(msg.sender == user, \\\"Cannot be called by user\\\");\\n        _;\\n    }\\n\\n    modifier onlyAfter(uint256 time) {\\n        require(block.timestamp > time, \\\"Cannot be called now\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0xdbba019b8f7f93b212a5bbae402ee988321c4fa82ed2b4c9e55b4d7ddf35dcc3\",\"license\":\"Apache-2.0\"},\"@cartesi/util/contracts/Instantiator.sol\":{\"content\":\"// Copyright 2020 Cartesi Pte. Ltd.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n// Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n// this file except in compliance with the License. You may obtain a copy of the\\n// License at http://www.apache.org/licenses/LICENSE-2.0\\n\\n// Unless required by applicable law or agreed to in writing, software distributed\\n// under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n// CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n// specific language governing permissions and limitations under the License.\\n\\n\\npragma solidity ^0.7.0;\\n\\n\\ninterface Instantiator {\\n\\n    modifier onlyInstantiated(uint256 _index) virtual;\\n\\n    modifier onlyActive(uint256 _index) virtual;\\n\\n    modifier increasesNonce(uint256 _index) virtual;\\n\\n    function isActive(uint256 _index) external view returns (bool);\\n\\n    function getNonce(uint256 _index) external view returns (uint256);\\n\\n    function isConcerned(uint256 _index, address _user) external view returns (bool);\\n\\n    function getSubInstances(uint256 _index, address) external view returns (address[] memory _addresses, uint256[] memory _indices);\\n}\\n\",\"keccak256\":\"0x416e612dc09b10765de32ec06cf0a7ee4e050e16db8bf3b8ad832a6082b7dfd6\",\"license\":\"Apache-2.0\"},\"@cartesi/util/contracts/InstantiatorImpl.sol\":{\"content\":\"// Copyright 2020 Cartesi Pte. Ltd.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n// Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n// this file except in compliance with the License. You may obtain a copy of the\\n// License at http://www.apache.org/licenses/LICENSE-2.0\\n\\n// Unless required by applicable law or agreed to in writing, software distributed\\n// under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n// CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n// specific language governing permissions and limitations under the License.\\n\\npragma solidity ^0.7.0;\\n\\nimport \\\"./Instantiator.sol\\\";\\n\\nabstract contract InstantiatorImpl is Instantiator {\\n    uint256 public currentIndex = 0;\\n\\n    mapping(uint256 => bool) internal active;\\n    mapping(uint256 => uint256) internal nonce;\\n\\n    modifier onlyInstantiated(uint256 _index) override {\\n        require(currentIndex > _index, \\\"Index not instantiated\\\");\\n        _;\\n    }\\n\\n    modifier onlyActive(uint256 _index) override {\\n        require(currentIndex > _index, \\\"Index not instantiated\\\");\\n        require(isActive(_index), \\\"Index inactive\\\");\\n        _;\\n    }\\n\\n    modifier increasesNonce(uint256 _index) override {\\n        nonce[_index]++;\\n        _;\\n    }\\n\\n    function isActive(uint256 _index) public override view returns (bool) {\\n        return (active[_index]);\\n    }\\n\\n    function getNonce(uint256 _index)\\n        public\\n        override\\n        view\\n        onlyActive(_index)\\n        returns (uint256 currentNonce)\\n    {\\n        return nonce[_index];\\n    }\\n\\n    function deactivate(uint256 _index) internal {\\n        active[_index] = false;\\n        nonce[_index] = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x8f8e29b807e5c55198206a370b4d8751cbd98a663e3f89faff274e2f9d7cae75\",\"license\":\"Apache-2.0\"},\"@cartesi/util/contracts/Merkle.sol\":{\"content\":\"// Copyright 2020 Cartesi Pte. Ltd.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n// Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n// this file except in compliance with the License. You may obtain a copy of the\\n// License at http://www.apache.org/licenses/LICENSE-2.0\\n\\n// Unless required by applicable law or agreed to in writing, software distributed\\n// under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT WARRANTIES OR\\n// CONDITIONS OF ANY KIND, either express or implied. See the License for the\\n// specific language governing permissions and limitations under the License.\\n\\n\\n/// @title Library for Merkle proofs\\npragma solidity ^0.7.0;\\n\\n\\nlibrary Merkle {\\n    function getPristineHash(uint8 _log2Size) public pure returns (bytes32) {\\n        require(_log2Size >= 3, \\\"Has to be at least one word\\\");\\n        require(_log2Size <= 64, \\\"Cannot be bigger than the machine itself\\\");\\n\\n        bytes8 value = 0;\\n        bytes32 runningHash = keccak256(abi.encodePacked(value));\\n\\n        for (uint256 i = 3; i < _log2Size; i++) {\\n            runningHash = keccak256(abi.encodePacked(runningHash, runningHash));\\n        }\\n\\n        return runningHash;\\n    }\\n\\n    function getRoot(uint64 _position, bytes8 _value, bytes32[] memory proof) public pure returns (bytes32) {\\n        bytes32 runningHash = keccak256(abi.encodePacked(_value));\\n\\n        return getRootWithDrive(\\n            _position,\\n            3,\\n            runningHash,\\n            proof\\n        );\\n    }\\n\\n    function getRootWithDrive(\\n        uint64 _position,\\n        uint8 _logOfSize,\\n        bytes32 _drive,\\n        bytes32[] memory siblings\\n    ) public pure returns (bytes32)\\n    {\\n        require(_logOfSize >= 3, \\\"Must be at least a word\\\");\\n        require(_logOfSize <= 64, \\\"Cannot be bigger than the machine itself\\\");\\n\\n        uint64 size = uint64(2) ** _logOfSize;\\n\\n        require(((size - 1) & _position) == 0, \\\"Position is not aligned\\\");\\n        require(siblings.length == 64 - _logOfSize, \\\"Proof length does not match\\\");\\n\\n        bytes32 drive = _drive;\\n\\n        for (uint64 i = 0; i < siblings.length; i++) {\\n            if ((_position & (size << i)) == 0) {\\n                drive = keccak256(abi.encodePacked(drive, siblings[i]));\\n            } else {\\n                drive = keccak256(abi.encodePacked(siblings[i], drive));\\n            }\\n        }\\n\\n        return drive;\\n    }\\n\\n    function getLog2Floor(uint256 number) public pure returns (uint8) {\\n\\n        uint8 result = 0;\\n\\n        uint256 checkNumber = number;\\n        checkNumber = checkNumber >> 1;\\n        while (checkNumber > 0) {\\n            ++result;\\n            checkNumber = checkNumber >> 1;\\n        }\\n\\n        return result;\\n    }\\n\\n    function isPowerOf2(uint256 number) public pure returns (bool) {\\n\\n        uint256 checkNumber = number;\\n        if (checkNumber == 0) {\\n            return false;\\n        }\\n\\n        while ((checkNumber & 1) == 0) {\\n            checkNumber = checkNumber >> 1;\\n        }\\n\\n        checkNumber = checkNumber >> 1;\\n\\n        if (checkNumber == 0) {\\n            return true;\\n        }\\n\\n        return false;\\n    }\\n\\n    /// @notice Calculate the root of Merkle tree from an array of power of 2 elements\\n    /// @param hashes The array containing power of 2 elements\\n    /// @return byte32 the root hash being calculated\\n    function calculateRootFromPowerOfTwo(bytes32[] memory hashes) public pure returns (bytes32) {\\n        // revert when the input is not of power of 2\\n        require(isPowerOf2(hashes.length), \\\"The input array must contain power of 2 elements\\\");\\n\\n        if (hashes.length == 1) {\\n            return hashes[0];\\n        }else {\\n            bytes32[] memory newHashes = new bytes32[](hashes.length >> 1);\\n\\n            for (uint256 i = 0; i < hashes.length; i += 2) {\\n                newHashes[i >> 1] = keccak256(abi.encodePacked(hashes[i], hashes[i + 1]));\\n            }\\n\\n            return calculateRootFromPowerOfTwo(newHashes);\\n        }\\n    }\\n\\n}\\n\",\"keccak256\":\"0xfab427885024176038f230531f5fbc87e80c38b22d7b5307a57a7a0b7cdfc6fe\",\"license\":\"Apache-2.0\"},\"contracts/MMInstantiator.sol\":{\"content\":\"// Copyright (C) 2020 Cartesi Pte. Ltd.\\n\\n// SPDX-License-Identifier: GPL-3.0-only\\n// This program is free software: you can redistribute it and/or modify it under\\n// the terms of the GNU General Public License as published by the Free Software\\n// Foundation, either version 3 of the License, or (at your option) any later\\n// version.\\n\\n// This program is distributed in the hope that it will be useful, but WITHOUT ANY\\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\\n// PARTICULAR PURPOSE. See the GNU General Public License for more details.\\n\\n// You should have received a copy of the GNU General Public License\\n// along with this program.  If not, see <https://www.gnu.org/licenses/>.\\n\\n// Note: This component currently has dependencies that are licensed under the GNU\\n// GPL, version 3, and so you should treat this component as a whole as being under\\n// the GPL version 3. But all Cartesi-written code in this component is licensed\\n// under the Apache License, version 2, or a compatible permissive license, and can\\n// be used independently under the Apache v2 license. After this component is\\n// rewritten, the entire component will be released under the Apache v2 license.\\n\\n/// @title An instantiator of memory managers\\npragma solidity ^0.7.0;\\n\\nimport \\\"@cartesi/util/contracts/InstantiatorImpl.sol\\\";\\nimport \\\"@cartesi/util/contracts/Decorated.sol\\\";\\nimport \\\"./MMInterface.sol\\\";\\nimport \\\"@cartesi/util/contracts/Merkle.sol\\\";\\n\\ncontract MMInstantiator is InstantiatorImpl, MMInterface, Decorated {\\n    // the provider will fill the memory for the client to read and write\\n    // memory starts with hash and all values that are inserted are first verified\\n    // then client can read inserted values and write some more\\n    // finally the provider has to update the hash to account for writes\\n\\n    struct ReadWrite {\\n        bool wasRead;\\n        uint64 position;\\n        bytes8 value;\\n    }\\n\\n    // IMPLEMENT GARBAGE COLLECTOR AFTER AN INSTACE IS FINISHED!\\n    struct MMCtx {\\n        address owner;\\n        address provider;\\n        bytes32 initialHash;\\n        bytes32 newHash; // hash after some write operations have been proved\\n        ReadWrite[] history;\\n        state currentState;\\n    }\\n\\n    mapping(uint256 => MMCtx) internal instance;\\n\\n    // These are the possible states and transitions of the contract.\\n    //\\n    // +---+\\n    // |   |\\n    // +---+\\n    //   |\\n    //   | instantiate\\n    //   v\\n    // +---------------+    | proveRead\\n    // | WaitingProofs |----| proveWrite\\n    // +---------------+\\n    //   |\\n    //   | finishProofPhase\\n    //   v\\n    // +----------------+    |read\\n    // | WaitingReplay  |----|write\\n    // +----------------+\\n    //   |\\n    //   | finishReplayPhase\\n    //   v\\n    // +----------------+\\n    // | FinishedReplay |\\n    // +----------------+\\n    //\\n\\n    event MemoryCreated(uint256 _index, bytes32 _initialHash);\\n    event ValueProved(\\n        uint256 _index,\\n        bool _wasRead,\\n        uint64 _position,\\n        bytes8 _value\\n    );\\n    event ValueRead(uint256 _index, uint64 _position, bytes8 _value);\\n    event ValueWritten(uint256 _index, uint64 _position, bytes8 _value);\\n    event FinishedProofs(uint256 _index);\\n    event FinishedReplay(uint256 _index);\\n\\n    /// @notice Instantiate a memory manager instance.\\n    /// @param _provider address that will provide memory values/proofs.\\n    /// @param _initialHash hash before divergence, in which both client and provider agree.\\n    /// @return MemoryManager index.\\n    function instantiate(\\n        address _owner,\\n        address _provider,\\n        bytes32 _initialHash\\n    ) public override returns (uint256) {\\n        MMCtx storage currentInstance = instance[currentIndex];\\n        currentInstance.owner = _owner;\\n        currentInstance.provider = _provider;\\n        currentInstance.initialHash = _initialHash;\\n        currentInstance.newHash = _initialHash;\\n        currentInstance.currentState = state.WaitingProofs;\\n        emit MemoryCreated(currentIndex, _initialHash);\\n\\n        active[currentIndex] = true;\\n        return currentIndex++;\\n    }\\n\\n    /// @notice Proves that a certain value in current memory is correct\\n    // @param _position The address of the value to be confirmed\\n    // @param _value The value in that address to be confirmed\\n    // @param proof The proof that this value is correct\\n    function proveRead(\\n        uint256 _index,\\n        uint64 _position,\\n        bytes8 _value,\\n        bytes32[] memory proof\\n    )\\n        public\\n        onlyInstantiated(_index)\\n        onlyBy(instance[_index].provider)\\n        increasesNonce(_index)\\n    {\\n        require(\\n            instance[_index].currentState == state.WaitingProofs,\\n            \\\"CurrentState is not WaitingProofs, cannot proveRead\\\"\\n        );\\n        require(\\n            Merkle.getRoot(_position, _value, proof) ==\\n                instance[_index].newHash,\\n            \\\"Merkle proof does not match\\\"\\n        );\\n        instance[_index].history.push(ReadWrite(true, _position, _value));\\n        emit ValueProved(_index, true, _position, _value);\\n    }\\n\\n    /// @notice Register a write operation and update newHash\\n    /// @param _position to be written\\n    /// @param _oldValue before write\\n    /// @param _newValue to be written\\n    /// @param proof The proof that the old value was correct\\n    function proveWrite(\\n        uint256 _index,\\n        uint64 _position,\\n        bytes8 _oldValue,\\n        bytes8 _newValue,\\n        bytes32[] memory proof\\n    )\\n        public\\n        onlyInstantiated(_index)\\n        onlyBy(instance[_index].provider)\\n        increasesNonce(_index)\\n    {\\n        require(\\n            instance[_index].currentState == state.WaitingProofs,\\n            \\\"CurrentState is not WaitingProofs, cannot proveWrite\\\"\\n        );\\n        // check proof of old value\\n        require(\\n            Merkle.getRoot(_position, _oldValue, proof) ==\\n                instance[_index].newHash,\\n            \\\"Merkle proof of write does not match\\\"\\n        );\\n        // update root\\n        instance[_index].newHash = Merkle.getRoot(_position, _newValue, proof);\\n        instance[_index].history.push(ReadWrite(false, _position, _newValue));\\n        emit ValueProved(_index, false, _position, _newValue);\\n    }\\n\\n    /// @notice Stop memory insertion and start read and write phase\\n    function finishProofPhase(uint256 _index)\\n        public\\n        override\\n        onlyInstantiated(_index)\\n        onlyBy(instance[_index].provider)\\n        increasesNonce(_index)\\n    {\\n        require(\\n            instance[_index].currentState == state.WaitingProofs,\\n            \\\"CurrentState is not WaitingProofs, cannot finishProofPhase\\\"\\n        );\\n        instance[_index].currentState = state.WaitingReplay;\\n        emit FinishedProofs(_index);\\n    }\\n\\n    /// @notice Stop write (or read) phase\\n    function finishReplayPhase(uint256 _index)\\n        public\\n        override\\n        onlyInstantiated(_index)\\n        onlyBy(instance[_index].owner)\\n        increasesNonce(_index)\\n    {\\n        require(stateIsWaitingReplay(_index), \\\"State of MM should be WaitingReplay\\\");\\n        delete (instance[_index].history);\\n        instance[_index].currentState = state.FinishedReplay;\\n\\n        deactivate(_index);\\n        emit FinishedReplay(_index);\\n    }\\n\\n    // getter methods\\n    function getRWArrays(uint256 _index)\\n    public\\n    override\\n    view\\n    returns (\\n        uint64[] memory,\\n        bytes8[] memory,\\n        bool[] memory\\n    )\\n    {\\n        ReadWrite[] storage his = instance[_index].history;\\n        uint256 length = his.length;\\n        uint64[] memory positions = new uint64[](length);\\n        bytes8[] memory values = new bytes8[](length);\\n        bool[] memory isRead = new bool[](length);\\n\\n        for (uint256 i = 0; i < length; i++) {\\n            positions[i] = his[i].position;\\n            values[i] = his[i].value;\\n            isRead[i] = his[i].wasRead;\\n        }\\n\\n        return (positions, values, isRead);\\n    }\\n\\n    function isConcerned(uint256 _index, address _user)\\n        public\\n        override\\n        view\\n        returns (bool)\\n    {\\n        return instance[_index].provider == _user;\\n    }\\n\\n    function getState(uint256 _index, address)\\n        public\\n        view\\n        onlyInstantiated(_index)\\n        returns (\\n            address _provider,\\n            bytes32 _initialHash,\\n            bytes32 _newHash,\\n            uint256 _numberSubmitted,\\n            bytes32 _currentState\\n        )\\n    {\\n        MMCtx memory i = instance[_index];\\n\\n        return (\\n            i.provider,\\n            i.initialHash,\\n            i.newHash,\\n            i.history.length,\\n            getCurrentState(_index)\\n        );\\n    }\\n\\n    function getSubInstances(uint256, address)\\n        public\\n        override\\n        pure\\n        returns (address[] memory, uint256[] memory)\\n    {\\n        address[] memory a = new address[](0);\\n        uint256[] memory i = new uint256[](0);\\n        return (a, i);\\n    }\\n\\n    function provider(uint256 _index)\\n        public\\n        view\\n        onlyInstantiated(_index)\\n        returns (address)\\n    {\\n        return instance[_index].provider;\\n    }\\n\\n    function initialHash(uint256 _index)\\n        public\\n        view\\n        onlyInstantiated(_index)\\n        returns (bytes32)\\n    {\\n        return instance[_index].initialHash;\\n    }\\n\\n    function newHash(uint256 _index)\\n        public\\n        override\\n        view\\n        onlyInstantiated(_index)\\n        returns (bytes32)\\n    {\\n        return instance[_index].newHash;\\n    }\\n\\n    // state getters\\n\\n    function getCurrentState(uint256 _index)\\n        public\\n        override\\n        view\\n        onlyInstantiated(_index)\\n        returns (bytes32)\\n    {\\n        if (instance[_index].currentState == state.WaitingProofs) {\\n            return \\\"WaitingProofs\\\";\\n        }\\n        if (instance[_index].currentState == state.WaitingReplay) {\\n            return \\\"WaitingReplay\\\";\\n        }\\n        if (instance[_index].currentState == state.FinishedReplay) {\\n            return \\\"FinishedReplay\\\";\\n        }\\n        require(false, \\\"Unrecognized state\\\");\\n    }\\n\\n    /// @notice Get the worst case scenario duration for a specific state\\n    /// @param _roundDuration security parameter, the max time an agent\\n    //          has to react and submit one simple transaction\\n    /// @param _timeToStartMachine time to build the machine for the first time\\n    function getMaxStateDuration(\\n        state _state,\\n        uint256 _roundDuration,\\n        uint256 _timeToStartMachine\\n    ) private pure returns (uint256) {\\n        if (_state == state.WaitingProofs) {\\n            // proving siblings is assumed to be free\\n            // so its time to start the machine\\n            // + one round duration to send the proofs\\n            // + one transaction for finishProofPhase transaction\\n            return _timeToStartMachine + uint256(2) * _roundDuration;\\n        }\\n        if (_state == state.WaitingReplay) {\\n            // one transaction for the step function to be completed\\n            return _roundDuration;\\n        }\\n        if (_state == state.FinishedReplay) {\\n            // one transaction for finishReplay transaction\\n            return _roundDuration;\\n        }\\n\\n        require(false, \\\"Unrecognized state\\\");\\n    }\\n\\n    function getCurrentStateDeadline(\\n        uint256 _index,\\n        uint256 _roundDuration,\\n        uint256 _timeToStartMachine\\n    )   public\\n        override\\n        view\\n        onlyInstantiated(_index)\\n        returns (uint256)\\n    {\\n        return getMaxStateDuration(\\n            instance[_index].currentState,\\n            _roundDuration,\\n            _timeToStartMachine\\n        );\\n    }\\n\\n    /// @notice Get the worst case scenario duration for an instance of this contract\\n    /// @param _roundDuration security parameter, the max time an agent\\n    //          has to react and submit one simple transaction\\n    /// @param _timeToStartMachine time to build the machine for the first time\\n    function getMaxInstanceDuration(\\n        uint256 _roundDuration,\\n        uint256 _timeToStartMachine\\n    ) public override pure returns (uint256) {\\n        uint256 waitingProofsDuration = getMaxStateDuration(\\n            state.WaitingProofs,\\n            _roundDuration,\\n            _timeToStartMachine\\n        );\\n\\n        uint256 waitingReplayDuration = getMaxStateDuration(\\n            state.WaitingReplay,\\n            _roundDuration,\\n            _timeToStartMachine\\n        );\\n\\n        uint256 finishProofsDuration = getMaxStateDuration(\\n            state.WaitingProofs,\\n            _roundDuration,\\n            _timeToStartMachine\\n        );\\n\\n        return\\n            waitingProofsDuration +\\n            waitingReplayDuration +\\n            finishProofsDuration;\\n    }\\n\\n    // remove these functions and change tests accordingly\\n    function stateIsWaitingProofs(uint256 _index)\\n        public\\n        override\\n        view\\n        onlyInstantiated(_index)\\n        returns (bool)\\n    {\\n        return instance[_index].currentState == state.WaitingProofs;\\n    }\\n\\n    function stateIsWaitingReplay(uint256 _index)\\n        public\\n        override\\n        view\\n        onlyInstantiated(_index)\\n        returns (bool)\\n    {\\n        return instance[_index].currentState == state.WaitingReplay;\\n    }\\n\\n    function stateIsFinishedReplay(uint256 _index)\\n        public\\n        override\\n        view\\n        onlyInstantiated(_index)\\n        returns (bool)\\n    {\\n        return instance[_index].currentState == state.FinishedReplay;\\n    }\\n}\\n\",\"keccak256\":\"0x65547e53eae687057b4aff51233b3244e4608abdcc201e691947084ba07c240c\",\"license\":\"GPL-3.0-only\"},\"contracts/MMInterface.sol\":{\"content\":\"// Copyright (C) 2020 Cartesi Pte. Ltd.\\n\\n// SPDX-License-Identifier: GPL-3.0-only\\n// This program is free software: you can redistribute it and/or modify it under\\n// the terms of the GNU General Public License as published by the Free Software\\n// Foundation, either version 3 of the License, or (at your option) any later\\n// version.\\n\\n// This program is distributed in the hope that it will be useful, but WITHOUT ANY\\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\\n// PARTICULAR PURPOSE. See the GNU General Public License for more details.\\n\\n// You should have received a copy of the GNU General Public License\\n// along with this program.  If not, see <https://www.gnu.org/licenses/>.\\n\\n// Note: This component currently has dependencies that are licensed under the GNU\\n// GPL, version 3, and so you should treat this component as a whole as being under\\n// the GPL version 3. But all Cartesi-written code in this component is licensed\\n// under the Apache License, version 2, or a compatible permissive license, and can\\n// be used independently under the Apache v2 license. After this component is\\n// rewritten, the entire component will be released under the Apache v2 license.\\n\\n/// @title Interface for memory manager instantiator\\npragma solidity ^0.7.0;\\n\\nimport \\\"@cartesi/util/contracts/Instantiator.sol\\\";\\n\\ninterface MMInterface is Instantiator {\\n    enum state {WaitingProofs, WaitingReplay, FinishedReplay}\\n\\n    function getCurrentState(uint256 _index) external view returns (bytes32);\\n\\n    function instantiate(\\n        address _owner,\\n        address _provider,\\n        bytes32 _initialHash\\n    ) external returns (uint256);\\n\\n    function newHash(uint256 _index) external view returns (bytes32);\\n\\n    function finishProofPhase(uint256 _index) external;\\n\\n    function finishReplayPhase(uint256 _index) external;\\n\\n    function getRWArrays(\\n        uint256 _index\\n    )\\n    external\\n    view\\n    returns (\\n        uint64[] memory,\\n        bytes8[] memory,\\n        bool[] memory\\n    );\\n\\n    function stateIsWaitingProofs(uint256 _index) external view returns (bool);\\n\\n    function stateIsWaitingReplay(uint256 _index) external view returns (bool);\\n\\n    function stateIsFinishedReplay(uint256 _index) external view returns (bool);\\n\\n    function getCurrentStateDeadline(\\n        uint256 _index,\\n        uint256 _roundDuration,\\n        uint256 _timeToStartMachine\\n    ) external view returns (uint256);\\n\\n    function getMaxInstanceDuration(\\n        uint256 _roundDuration,\\n        uint256 _timeToStartMachine\\n    ) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xc35a3addeda42b399d8995c1d3e8ea16746d1d95bb5214cd9709201bc9d702c0\",\"license\":\"GPL-3.0-only\"}},\"version\":1}",
  "storageLayout": {
    "storage": [
      {
        "astId": 89,
        "contract": "contracts/MMInstantiator.sol:MMInstantiator",
        "label": "currentIndex",
        "offset": 0,
        "slot": "0",
        "type": "t_uint256"
      },
      {
        "astId": 93,
        "contract": "contracts/MMInstantiator.sol:MMInstantiator",
        "label": "active",
        "offset": 0,
        "slot": "1",
        "type": "t_mapping(t_uint256,t_bool)"
      },
      {
        "astId": 97,
        "contract": "contracts/MMInstantiator.sol:MMInstantiator",
        "label": "nonce",
        "offset": 0,
        "slot": "2",
        "type": "t_mapping(t_uint256,t_uint256)"
      },
      {
        "astId": 2024,
        "contract": "contracts/MMInstantiator.sol:MMInstantiator",
        "label": "instance",
        "offset": 0,
        "slot": "3",
        "type": "t_mapping(t_uint256,t_struct(MMCtx)2020_storage)"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      },
      "t_array(t_struct(ReadWrite)2006_storage)dyn_storage": {
        "base": "t_struct(ReadWrite)2006_storage",
        "encoding": "dynamic_array",
        "label": "struct MMInstantiator.ReadWrite[]",
        "numberOfBytes": "32"
      },
      "t_bool": {
        "encoding": "inplace",
        "label": "bool",
        "numberOfBytes": "1"
      },
      "t_bytes32": {
        "encoding": "inplace",
        "label": "bytes32",
        "numberOfBytes": "32"
      },
      "t_bytes8": {
        "encoding": "inplace",
        "label": "bytes8",
        "numberOfBytes": "8"
      },
      "t_enum(state)2873": {
        "encoding": "inplace",
        "label": "enum MMInterface.state",
        "numberOfBytes": "1"
      },
      "t_mapping(t_uint256,t_bool)": {
        "encoding": "mapping",
        "key": "t_uint256",
        "label": "mapping(uint256 => bool)",
        "numberOfBytes": "32",
        "value": "t_bool"
      },
      "t_mapping(t_uint256,t_struct(MMCtx)2020_storage)": {
        "encoding": "mapping",
        "key": "t_uint256",
        "label": "mapping(uint256 => struct MMInstantiator.MMCtx)",
        "numberOfBytes": "32",
        "value": "t_struct(MMCtx)2020_storage"
      },
      "t_mapping(t_uint256,t_uint256)": {
        "encoding": "mapping",
        "key": "t_uint256",
        "label": "mapping(uint256 => uint256)",
        "numberOfBytes": "32",
        "value": "t_uint256"
      },
      "t_struct(MMCtx)2020_storage": {
        "encoding": "inplace",
        "label": "struct MMInstantiator.MMCtx",
        "members": [
          {
            "astId": 2008,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "owner",
            "offset": 0,
            "slot": "0",
            "type": "t_address"
          },
          {
            "astId": 2010,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "provider",
            "offset": 0,
            "slot": "1",
            "type": "t_address"
          },
          {
            "astId": 2012,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "initialHash",
            "offset": 0,
            "slot": "2",
            "type": "t_bytes32"
          },
          {
            "astId": 2014,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "newHash",
            "offset": 0,
            "slot": "3",
            "type": "t_bytes32"
          },
          {
            "astId": 2017,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "history",
            "offset": 0,
            "slot": "4",
            "type": "t_array(t_struct(ReadWrite)2006_storage)dyn_storage"
          },
          {
            "astId": 2019,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "currentState",
            "offset": 0,
            "slot": "5",
            "type": "t_enum(state)2873"
          }
        ],
        "numberOfBytes": "192"
      },
      "t_struct(ReadWrite)2006_storage": {
        "encoding": "inplace",
        "label": "struct MMInstantiator.ReadWrite",
        "members": [
          {
            "astId": 2001,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "wasRead",
            "offset": 0,
            "slot": "0",
            "type": "t_bool"
          },
          {
            "astId": 2003,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "position",
            "offset": 1,
            "slot": "0",
            "type": "t_uint64"
          },
          {
            "astId": 2005,
            "contract": "contracts/MMInstantiator.sol:MMInstantiator",
            "label": "value",
            "offset": 9,
            "slot": "0",
            "type": "t_bytes8"
          }
        ],
        "numberOfBytes": "32"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      },
      "t_uint64": {
        "encoding": "inplace",
        "label": "uint64",
        "numberOfBytes": "8"
      }
    }
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "finishProofPhase(uint256)": {
        "notice": "Stop memory insertion and start read and write phase"
      },
      "finishReplayPhase(uint256)": {
        "notice": "Stop write (or read) phase"
      },
      "instantiate(address,address,bytes32)": {
        "notice": "Instantiate a memory manager instance."
      },
      "proveRead(uint256,uint64,bytes8,bytes32[])": {
        "notice": "Proves that a certain value in current memory is correct"
      },
      "proveWrite(uint256,uint64,bytes8,bytes8,bytes32[])": {
        "notice": "Register a write operation and update newHash"
      }
    },
    "version": 1
  }
}